作為一名前端程式設計師,自然學習了一些框架,但是學的越多越發現自己基礎的不足,於是想系統的學習一下js基礎,然後把它記錄下來。
如其他程式語言一樣,詞法結構是一門語言的基礎,它規定了諸如如何給變數起名字、如何寫註釋、如何斷句等。
字符集
JavaScript 所使用的是Unicode字符集編碼。和HTML不同,JavaScript 是區分大小寫的。也就是說變數、函式名、關鍵字和所有的識別符號都必須使用一致的大小寫形式。比如我們可以使用 var 來定義一個變數,而不能使用 VAR 或者 Var 來定義。JavaScript 直譯器會忽略空格類字元(空格符、水平製表符、垂直製表符、換頁符、不中斷空白、位元組序標記等)和換行類字元(換行符、回車符、行分隔符、段分隔符)。因此我們可以使用空格空行來格式化程式碼,提高程式碼可讀性。
註釋
註釋不是 JavaScript 程式碼的必要部分,但是註釋不僅可以增加程式碼可讀性,還方便程式測試。JavaScript 支援兩種格式的註釋。第一種是單行註釋,由雙斜槓構成,在一行中Javascript 直譯器會忽略第一個“//”之後的文字,直到本行結束。第二種是多行註釋 JavaScript 將忽略 “/*”至“*/” 之間的文字,但是多行註釋是不支援巢狀的(也沒有巢狀的意義)。
// 這裡是單行註釋 /* * 這裡是多行註釋 */
直接量
直接量又叫做字面量,它是程式中直接可以使用的資料值。下面是一些直接量(字面量)的例子:
12 // 數字直接量(字面量) 'zhangsan' //字串直接量(字面量) true //布林直接量(字面量) /\b[1,6]/g //正則直接量(字面量) { a: 1, b: 2 } //物件直接量(字面量) [ 1, 3, 5 ] //陣列直接量(字面量)
識別符號、關鍵字、保留字
JavaScript 識別符號其實就是一個名字,可以用這個名字命名變數和函式,也可以用作語句標記。JavaScript 是由數字、字母、下劃線(_)和美元符號($)組成,但是不能以數字開頭。JavaScript 從這些識別符號中拿出來一些作為自己的關鍵字。因此我們不能使用任意的識別符號來給標量函式命名。現在的編輯器程式碼提示功能很強大,幾乎不會在這上面出錯。下面列出了關鍵字:
break delete function return typeof case do if switch var catch else in this void continue false
instanceof throw while debugger finally new true with default for null try
同時 JavaScript 還保留了一些識別符號。儘管這些識別符號目前還不是關鍵字,但是在不久後可能成為關鍵字。這些識別符號稱作保留字,這樣我們在程式設計時就要避免使用這些保留字,以免發生一些不必要的bug。
語句分隔符
JavaScript 使用分號 ( ; )作為語句分隔符。但是這個( ; )不是必須的。當不寫這個( ; )時,JavaScript 直譯器試圖將兩條語句放在一起解釋,當 js 發現無法解釋通的時候,它就會在一行結尾添補分號。例如:
a = 5 b = 10 // js直譯器先會解釋成 a = 5 b = 10;發現無法解釋通後會在末尾填不上分號,於是解釋成下列語句: a = 5; b = 10; var x = y + z ( m + n ).toString() // js直譯器先會嘗試把 z(m+n)當做是函式呼叫表示式,然後解釋為: var x = y + z ( m + n ) .toString();
但是凡事都有例外,有兩種情況 js 會出乎意料。第一種當使用return、continue、break關鍵字時,如果他們後面緊跟著換行,那麼js直譯器將不會嘗試和下一行放在一起解釋,而會直接添補分號;例如:
return true // js會將這兩行語句解釋成 return ; true; //而其本意應該是 return true;
第二種情況遇到 ++、-- 這樣的運算子,他們的特點是結合性從右向左,並且運算元是1,例如:
a ++ b
看上面的程式碼,當 JavaScript 直譯器解釋道第二行 ++ 的時候會先解釋其右面的語句,於是將 b 作為++的運算元,因為++的運算元為1,因此無法向前解釋,於是將上面程式碼解釋成:
a ;
++ b;
JavaScript 的詞法結構比較簡單,並且現代的編輯器功能都比較出強大。在日常程式設計的時候很少出現錯誤,但是我們還是要注意這些基本問題。
更多資訊,點選個人空間訪問。