JavaScript把一些標(biāo)識符拿出來用做自己的關(guān)鍵字。因此程序中不能在用這些關(guān)鍵字做標(biāo)識符:
break????????delete????????function????????return????????typeof????????
case?????????do??????????????if???????????????????return????????switch
catch????????else???????????in??????????????????this????????????void
continue???false??????????instanceof????throw?????????while
debugger?finally?????????new??????????????true?????????????with
default?????for??????????????null???????????????try
javascript同樣保留一些關(guān)鍵字,這些關(guān)鍵字在當(dāng)前版本并沒有使用,但在未來版本可能會用到。ECMAScript 5保留了這些關(guān)鍵字:
class????const????enum????export????extneds????import????super
此外下面這些關(guān)鍵字在普通的javascript代碼中是合法的,但在嚴格模式下是保留字:
implements??let??private??public??yield??interface??package??protected ??static
嚴格模式同樣對下面標(biāo)識符的使用做了嚴格限制,它們并不完全是保留字,但不能用做變量名、函數(shù)或參數(shù)名:
arguments????eval
ECMAScript 3將Java所有的關(guān)鍵字都列為自己的保留字,盡管這些保留字在ECMAScript 5中放寬了限制,但是如果希望代碼在ECMAScript 3解釋器運行的話,應(yīng)該避免這些字符:
abstract????double????goto????native????static????boolean????enum????implements????package????super????byte????export????import????private????synchronized????char????extends????int????protected????throws????class????final????interface????public????transient????const????float????long????short????volatile
JavaScript預(yù)定義了很多全局變量和函數(shù),應(yīng)當(dāng)避免把它們的名字用做變量名和函數(shù)名:
arguments????encodeURI????Infinity????Number????RegExp????Array????encodeURIComponent????isFinite????Object????String????Boolean????Error????isNan????parseFloat????SyntaxError????Date????eval????JSON????parseInt????TypeError????decodeURI????EvalError????Math????RangeError????undefined????decodeURIComponent????Function????NaN????ReferenceError????URIError
JavaScript的具體實現(xiàn)可能定義獨有的全局變量和函數(shù),每一種特定的JavaScript運行環(huán)境都有自己的一個全局屬性列表,這一點需要牢記。