1、字符集
JavaScript程序是用Unicode字符集編寫的。
1.1 區(qū)分大小寫
JavaScript是區(qū)分大小寫的語言。也就是說,關(guān)鍵字、變量、函數(shù)名和所有標識符(identifier)都必須采取一致的大小寫形式。比如:“name”和“Name”是不同的變量。
1.2 空格、換行符和格式控制符
在JavaScript中,會忽略程序中標識之間的空格。而對于換行符,JavaScript在多數(shù)情況下也會忽略,但有一種情況例外:當在return、break、continue語句后添加換行符時,JavaScript會在換行處添加分號。
JavaScript可以識別一些特殊字符:
空格符(\u0020)
水平制表符(\u0009)
換頁符(\u000C)
換行符(\u000A)
回車符(\u000D)
回車符加換行符在一起被解析為一個單行結(jié)束符。
1.3 Unicode轉(zhuǎn)義序列
JavaScript定義了一種特殊序列,用6個ASCII字符來代表任意16位Unicode內(nèi)碼。這些Unicode轉(zhuǎn)義序列均以\u為前綴,其后跟隨4個十六進制數(shù)(使用數(shù)字以及大寫或小寫字母A~F表示)
2、 注釋
JavaScript提供了兩種格式的注釋。
單行注釋: 以//開頭
多行注釋:放在 /* 和 */之間(可跨行書寫,但不能有嵌套注釋)
3、 直接量
直接量:程序中直接使用的數(shù)據(jù)值。比如:
12 //數(shù)字
1.2 //小數(shù)
"hello world" //字符串
true //布爾值
/javascript/gi //正則表達式直接量
null //空
4、 標識符和保留字
標識符(identifier)是用來識別具體對象的一個名稱。
JavaScript語言的標識符對大小寫敏感,所以a和A是兩個不同的標識符。
標識符命名規(guī)則:
第一個字符不能為數(shù)字,可以是任意Unicode字母(包括英文字母和其他語言的字母),以及美元符號($)和下劃線(_)
第二個字符及后面的字符,除了Unicode字母、美元符號和下劃線,還可以用數(shù)字。
中文是合法的標識符,可以用作變量名。
JavaScript有一些保留字,不能用作標識符:arguments、break、case、catch、class、const、continue、debugger、default、delete、do、else、enum、eval、export、extends、false、finally、for、function、if、implements、import、in、instanceof、interface、let、new、null、package、private、protected、public、return、static、super、switch、this、throw、true、try、typeof、var、void、while、with、yield。
另外,還有三個詞雖然不是保留字,但是因為具有特別含義,也不應該用作標識符:Infinity、NaN、undefined。
5、 可選的分號
JavaScript使用分號(;)將語句分隔開。
注意:JavaScript并不是在所有換行處都填補分號,只有在缺少了分號就無法正確解析代碼的時候,才會填補分號。也可以說,如果當前語句和隨后的非空格字符不能當做一個整體來解析時,JavaScript就在當前語句行結(jié)束處填補分號 。比如下面代碼:
var a
a
=
3
console.log(a)
JavaScript將其解析為:
var a;a=3;console.log(a);
JavaScript給第一行換行處添加了分號,因為沒有分號,JavaScript就無法解析代碼var a a。第二個a可以單獨當做一條語句“a;”,但JavaScript并沒有給第二行結(jié)尾填補分號,因為它可以和第三行內(nèi)容一起解析成“a=3”。
上面的代碼解析后是沒有問題的,可是沒有主動添加分號,有些時候會導致意想不到的情形。比如:
var y=x+f
(a+b).toString()
解析后:
var y=x+f(a+b).toString();
如果當前語句和下一行語句無法合并解析,JavaScript則在第一行后填補分號,這是通用規(guī)則,但有兩個例外。
第一個例外是在涉及return、break和continue語句的場景總,如果這三個關(guān)鍵字后緊跟換行,JavaScript則會在換行處填補分號。
例如:
return
true;
JavaScript會解析成:
return; true;
第二個例外是在涉及“++”和“--”運算符的時候。
x
++
y
將會解析成 “x;++y”,而不是“x++;y”
適當?shù)奶砑臃痔枺杀苊庖庀氩坏降腻e誤。
更多建議: