分隔符(空白符)就是各種不可見字符的集合,如空格(\u0020)、水平制表符(\u0009)、垂直制表符(\u000B)、換頁符(\u000C)、不中斷空白(\u00A0)、字節序標記(\uFEFF)、換行符(\u000A)、 回車符(\u000D)、行分隔符(\u2028)、段分隔符(\u2029)等。
在 JavaScript 中,分隔符不被解析,主要用來分隔各種記號,如標識符、關鍵字、直接量等信息。
在 JavaScript 腳本中,常用分隔符來格式化代碼,以方便閱讀。
示例1
對於下面一行代碼:
function toStr(a){return a.toString();}
可以使用分隔符格式化顯示:
function toStr(a){ return a.toString(); }
一般 JavaScript 編輯器都會提供代碼格式化的功能。
分隔符使用時需要注意以下幾點:
- 分隔符雖然無實際意義,但是在腳本中卻不能缺少。
如果在標識符與關鍵字之間不使用分隔符分隔,JavaScript 就會拋出異常
示例2
在下面代碼中,把關鍵字 function 與標識符 toStr 連在一起,以及把關鍵字 return 與 toString 標識符連在一起都是錯誤的。
functiontoStr(a){returna.toString();} //錯誤寫法 function toStr(a){return a.toString();} //正確寫法
- JavaScript 解析器一般采用最長行匹配原則,不恰當地換行顯示一句代碼,容易引發異常或錯誤。
示例3
下面代碼會返回意外的結果。
function toStr(a){ return a.toString(); //錯誤的換行 } document.write(toStr("abc")); //實際返回 undefined,應該返回"abc"
這是因為 return 作為一條獨立語句,JavaScript 解析器可以正確解析它,雖然它后面沒有分號,解析器在正確解析的前提下會自動為其補加一個分號,以表示該句已經結束。
這樣換行顯示的 a.toString();就是下一句待執行的命令,而不是被返回的值。
- 不能在標識符、關鍵字等內部使用分隔符。
示例4
在下面函數中使用空格把 toString() 分為兩部分,JavaScript 會因無法識別而拋出異常。
function toStr(a){ return a.to String(); //錯誤分隔符 }
- 在字符串或者正則表達式內,分隔符是有意義的,不能夠隨意省略或替換。
示例5
在下面代碼中,變量 a 和 b 被賦予相同的字符串,但是變量 b 中插入了空格,則比較結果是不相等的。
var a = "空格"; var b = "空格 "; document.write((a==b)); //返回 false,說明不相同