JavaScript把一些標識符拿出來用做自己的關鍵字。因此程序中不能在用這些關鍵字做標識符:
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同樣保留一些關鍵字褪测,這些關鍵字在當前版本并沒有使用来惧,但在未來版本可能會用到报亩。ECMAScript 5保留了這些關鍵字:
class????const????enum????export????extneds????import????super
此外下面這些關鍵字在普通的javascript代碼中是合法的,但在嚴格模式下是保留字:
implements??let??private??public??yield??interface??package??protected ??static
嚴格模式同樣對下面標識符的使用做了嚴格限制,它們并不完全是保留字迎瞧,但不能用做變量名间螟、函數(shù)或參數(shù)名:
arguments????eval
ECMAScript 3將Java所有的關鍵字都列為自己的保留字吴旋,盡管這些保留字在ECMAScript 5中放寬了限制,但是如果希望代碼在ECMAScript 3解釋器運行的話厢破,應該避免這些字符:
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預定義了很多全局變量和函數(shù)荣瑟,應當避免把它們的名字用做變量名和函數(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)境都有自己的一個全局屬性列表摩泪,這一點需要牢記笆焰。