Crockford的JavaScript:好的部分包含以下文本.
保留字
JavaScript中保留以下单词:
abstract boolean break byte case catch char class const continue debugger default delete do double else enum export extends false final finally float for function goto if implements import in instanceof int interface long native new null package private protected public return short static super switch synchronized this throw throws transient true try typeof var volatile void while with这些单词中的大部分都没有在语言中使用.
它们不能用于命名变量或参数.当保留字用作对象文字中的键时,必须引用它们.它们不能与点表示法一起使用,因此有时需要使用括号表示法:
var method; // ok var class; // illegal object = {box: value}; // ok object = {case: value}; // illegal object = {'case': value}; // ok object.box = value; // ok object.case = value; // illegal object['case'] = value; // ok
在我安装的解释器中似乎没有保留一些保留字.例如,在Chrome 48(beta)和node.js 0.10.40中,以下代码将成功添加由保留字标识的两个数字.
var abstract = 1; var native = 1; abstract + native; > 2
为什么我可以将这两个保留字用作变量名?我错过了一些关键的东西吗
从ECMAScript 6开始的保留关键字
break case class catch const continue debugger default delete do else export extends finally for function if import in instanceof new return super switch this throw try typeof var void while with yield
和abstract
和native
(更多在这里)被保留作为年长的ECMAScript规范未来的关键字(ECMAScript中1至3).
永远保留: enum
在严格模式代码中找到它们时保留:
implements package protected static let interface private public
在模块代码中找到它们时保留: await