1. 程式人生 > 實用技巧 >【學習筆記】JavaScript——變數、常量、保留字、運算子與表示式、語句

【學習筆記】JavaScript——變數、常量、保留字、運算子與表示式、語句

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

變數、常量、保留字

變數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