【學習筆記】JavaScript——變數、常量、保留字、運算子與表示式、語句
變數、常量、保留字
變數Variable:一種特殊的識別符號(identifier)。儲存資訊(值或表示式)的容器。
【與常量Constant相比,變數儲存的資料,可根據程式需要而改變;JS中的變數為notype,及弱型別】
1)命名規則:由Unicode字串和數字組成。首字元為:字母、下劃線、美元符號$。其後的還可用數字。
2)變數生存期(有效範圍):全域性(global)變數、本地(local)變數。【變數沒有語句塊限制】
前者用於整個文件中JS程式碼執行結束止。後者用於函式及其巢狀的子函式中、但不能用於父級或其他函式。
常量Constant:不變的值。【IE不支援const】
1) const constantName = value1;
常量名首字元為字母或下劃線,其後可有數字。value1為直接量或表示式。
2)1個const關鍵字可定義1個或多個常量。
3)內建常量:JS中Infinity表無窮大的數值,-indinity表無窮小。NaN表非數值。
保留字:JS中有特殊含義的識別符號。不能用於變數命名。
保留字大多數為關鍵字Keywords,還有一些為擴充套件準備而不建議使用的特性關鍵字(Future Keywords)
運算子與表示式
運算子Operator:操作變數或值。6-40種
9個算術Arithmetic: + - * / 模% 遞增++ 遞減-- 正號+ 取反-
【addition/subtraction/multiplication/division/modulus/increment/decrement/?/decrement
1個字串String:+
3個邏輯Logical:邏輯與Logical AND && 邏輯或Logical OR || 邏輯非Logical NOT!
8個比較Comparison:> < >= <= == != 等同=== 不等同!== 【比較運算子在兩運算元間比較,返回布林值
【greater than/less than/g t or q/l t or q/equal/not equal/strict equal/strict not equal
【==比較時會隱式轉換,===比較時不允許轉換。
7個逐位Bitwise:逐位與& 逐位或| 逐位非~ 逐位異或Bitwise XOR^ 【2值相同返0,否則1
Left Shift左移<< 帶符號右移>> 0補足右移>>>
【逐位運算子 將各進位制的運算元轉換為32位的二進位制數,並逐位/按位進行操作後返回十進位制數。
【逐位運算子又分為:逐位邏輯運算子、逐位位移運算子。
12個賦值Assignment:①普通:= ②帶操作:+= -= *= /= %= &= ^= |= <<= >>= >>>=
特殊運算子:12種
條件conditional: boolCondition?value1:value2 (JS中唯一的三元運算子)
逗號comma:(,)JS最簡單的運算子,用於分割2個運算元。
delete:刪除成功返回true,否則false。
【刪除變數:不能刪除變數中var定義的變數。刪除未定義變數返true。刪除後不能訪問。
【刪除物件:不能刪除物件中var定義的物件。刪除未定義物件返true。刪除後不能訪問。
【刪除物件屬性:刪除不存在屬性返true。返問已刪除/不存在物件屬性返undefined。
【刪除陣列元素:不管是否var定義都能刪除。刪後陣列長度不變。刪後元素仍能訪問,值為undefined
in:判斷某屬性/元素是否屬於某物件/陣列。 propNameOrNumber in objectName
【propNameOrNumber為屬性名時,是字串或能轉為字串的型別。
【propNameOrNumber為陣列的下標時,是數字型或能轉為數字型的型別。
instanceof:判斷物件是否為某物件型別。 objectName instanceof objecrType
【objectName為物件名。objectType為物件型別,如Date/Arrayr等。Object是所有物件的型別。
new:一元。建立自定義/內建物件。如Array、Boolean、Function、Image、Option、RegExp等。
objectName = new objectType(param1 [,param2] …. [paramN] )
this:可在一個方法中呼叫當前物件。this propertyName
typeof:一元。返回字串 表示運算元型別。typeof operand、typeof (literal)
【對直接量:返回結果類似變數。
typeof([1,2,3]) 返object
typeof({height:10,width:20}) 返object
typeof(function(a) {return -a}) 返function
【對關鍵字:null返object。undefined返undefined。
【對物件屬性:返回結果,與屬性值相關。typeof( location.host )返string。typeof( Math.PI )返nunber
※ 運算元為JS 核心物件(Array/Boolean/Date/Error/Function/Number/String/Object等),返回function
※ 運算元為BOM中的物件/方法(window/navigator/frames/location/history/document/screen),返回object
void:一元。計算某表示式/執行某方法等,不會有返回值。常用於a連結,開啟新視窗而原視窗不變。
陣列元素存取[ ]:二元。可讀寫陣列元素值。get = array[ number ] array[ number ] = set
物件可看成一個數組:get = object[ propretyName ] object[ propretyName ]=set
函式呼叫( ):運算元有傳遞引數決定。用於呼叫函式/物件方法。
物件存取 .:二元。可讀寫物件屬性。get = objecct . proprety; object . proprety = set;
運算元Operant:運算子處理的資料。
由運算元個數,運算子分一元Unary、二元Binary和三元Ternary。【在JS中只有條件運算子是三元運算子】
表示式Expression:可為直接量、變數、常量、也可以是(運算子、操作符和標點符號)組成的語句。
【直接量:值(如:1233、“abc”、true、[1,2,5]、{width:100,height:200} ….)】最後1個為物件直接量
語句
5類:選擇語句、迴圈語句、跳轉語句、異常處理語句、其他語句。
語句塊:JS中的作用域是整個函式中,與大括號包圍的語句塊無關。
選擇語句:2種: if 、 switch
if語句、if…else語句、if…else if語句。可巢狀。
switch語句:在執行多個分支中,優於if語句(if每個分支需檢測一次變數值)。
※ switch語句中的case語句,需要一個終止(否則繼續執行後面的case語句),如break。
迴圈語句:for 、 while 、 do…while 【JS中的迴圈語句不提供執行分支,而是反覆執行
逗號運算子與for語句結合:for(var x=0,y=3;x<y;x+=2,++y)
物件操作語句:for…in 、for each in
for…in:遍歷陣列元素或物件屬性。for( 變數 in 陣列/物件 ) { … }
(while和for…in的變數 在迴圈語句外 宣告)通過將所有 元素/屬性 反覆賦值給 變數。
注意:遍歷時,若物件存在方法,此語句會將方法賦值給變數。
物件的大多數未定義的內建屬性及覆蓋內建屬性的方法,將不被遍歷。如String的length屬性和replace()方法
再迴圈體中刪除的屬性,將不被遍歷。
with語句:用於簡化引用程式碼。
跳轉語句:label語句、break語句、continue語句。
跳轉語句必須放在迴圈體中。故lable語句需放在迴圈語句之前才有作用。
label語句語法:lableName:
break語句語法:break;或break lable;不能跳轉到其他迴圈語句前的lable中。
continue語句:只能跳出當前迴圈
異常處理語句:throw語句(丟擲)、try…catch語句(捕獲)、finally語句。
幾個概念:異常exception:表出錯的資訊。丟擲throw:表異常狀況的資訊。捕捉catch:處理丟擲的異常。
異常型別:
JS 異常 |
Error: 普通異常。 |
EvalError: 使用eval()出錯。 |
RangeError: 數字超合法範圍。 |
ReferenceError: 讀取不存在變數。 |
SyntaxError: 語法錯誤。 |
TypeError: 型別錯誤。 |
URIError: URI編碼或解碼出錯。 |
DOM異常 |
DOMException DOM物件異常。 |
EventException :事件異常。 |
RangeException :範圍異常。 |
throw語句:可丟擲異常對像或其他型別物件。如throw new Error(“出錯了”);或throw -1;或tw“xx”;
try...catch語句:try statement catch(ex) statemrnt【變數ex為throw丟擲的Error物件。
finally語句:不能單獨執行,需與try語句合作。
其他語句:6種。空語句(排版/充當佔位符)。註釋語句(//或/**/)。var語句(定義變數)。const語句(定義常量)。function語句(定義函式)。return語句(只用於函式體,返回一個值)。
轉載於:https://my.oschina.net/airship/blog/870830