1 字符集
JavaScript 程序是用 Unicode 字符集編寫的。Unicode 是 ASCII 和 Latin-1 的超集,並支持地球上幾乎所有在用的語言。
1.1 字符的 Unicode 表示法
JavaScript 字符允許採用 Unicode 表示法,但是只限於 Unicode 碼點在 \u0000~\uFFFF 之間的字符。超出這個範圍的字符,必須用 2 個雙字節的形式表示。
'\u0041' // => "A"
'\u20BB7' // => "₻7"
'\uD842\uDFB7' // => "��"
ES6 對這一點做出了改進,只要將碼點放入大括號,就能正確解讀該字符。
'\u{41}' // => "A"
'\u{20BB7}' // => "��"
'\u{20BB7}' === '\uD842\uDFB7' // => true
1.2 區分大小寫
JavaScript 是區分大小寫的語言。所有的標識符(identifier)都必須採取一致的大小寫形式。但是Html並不區分大小寫(儘管Xhtml區分大小寫)。
1.3 空格、換行符和格式控制符
JavaScript 會忽略程序中的標識(token)之間的空格。除了可以識別普通的空格符(\u0020),JavaScript 還可以識別:水平製表符(\u0009)、垂直製表符(\u000B)、換頁符(\u000C)、不換行空格符(\u00A0)、零寬不換行空格符(\uFEFF)等 Unicode 中的空白字符。
JavaScript 將如下字符識別爲換行符:換行符(\u000A)、回車符(\u000D)、行分隔符(\u2028)、段分隔符(\u2029)。回車符加換行符在一起被解析爲一個單行結束符。多數情況下 JavaScript 也會忽略換行符,但以下兩種情況例外:
// 1 涉及 return、break、continue 這三個關鍵字的時候
return
true
/* 上面代碼本意 “return true”
但是 JavaScript 會解析成 “return; true”
*/
// 2 涉及 ++ 和 -- 運算符的時候
x
++
y
/* 上面代碼本意 “x++; y”
但是 JavaScript 會解析成 “x; ++y”
*/
控制符控制文本的視覺顯示,比如:從右至左書寫標記(\u200F)和從右至左書寫標記(\u200E)。同空格、換行符,格式控制符不能用在標識符(比如:變量名)中。但有個例外, 零寬連接符(\u200D)和零寬不連接符(\u200C)可以出現在標識符中,但不能作爲標識符的首字符。
var A\u200DB = 'AB'
console.log('A\u200DB = ' + A\u200DB) // => AB = AB
2 註釋
Javascript 註釋的語法與 C ++ 等語言中的語法相同
// 單行註釋
/* 這是一個更長的,
多行註釋
*/
/* 然而, 你不能, /* 嵌套註釋 */ 語法錯誤 */
3 字面量
字面量(literal,或者稱直接量)就是程序中直接使用的數據值,如:
12 // 數字
1.2 // 小數
"hello world" // 字符串文本
'hi' // 另一個字符串
true // 布爾值
false // 另一個布爾值
/javascript/gi // 正則表達式直接量(用做模式匹配)
null // 空
{x: 1, y: 2} // 對象
[1, 2, 3, 4, 5] // 數組
4 標識符和保留字
在 JavaScript 中標識符用來對變量和函數進行命名,或者用作 JavaScript 代碼中某些循環語句中的跳轉位置的標記。JavaScript 標識符必須以字母、下劃線(_)或美元符($)開始,後續的字符可以是字母、數字、下劃線或美元符。
和其他編程語言一樣,JavaScript 保留了一些標識符爲自己所用。保留字不能用作普通的標識符。在 MDN Web Docs 中查看 JavaScript 保留字。
另外,JavaScript 預定義了很多全局變量和函數,即 JavaScript 內置對象,應當避免把它們的名字用做變量名和函數名。在 MDN Web Docs 中查看 JavaScript 內置對象。