A.6 保留字
ES5 规范在 7.6.1 节中定义了一些“保留字”,我们不能将它们用作变量名。这些保留字有四类:“关键字”“预留关键字”、null 常量和 true/false 布尔常量。
像 function 和 switch 都是关键字。预留关键字包括 enum 等,它们中很多已经在 ES6 中被用到(如 class 、extend 等)。另外还有一些在严格模式中使用的保留字,如 interface 。
一个名为“art4theSould”的 StackOverflow 用户将这些保留字编成了一首有趣的小诗(http://stackoverflow.com/questions/26255/reserved-keywords-in-javascript/12114140#12114140 ):
Let this long package float,
Goto private class if short.
While protected with debugger case,
Continue volatile interface.
Instanceof super synchronized throw,
Extends final export throws.
Try import double enum?
-False, boolean, abstract function,
Implements typeof transient break!
Void static, default do,
Switch int native new.
Else, delete null public var
In return for const, true, char
...Finally catch byte.
这首诗中包含了 ES3 中的保留字(byte 、long 等),它们在 ES5 中已经不再是保留字。
在 ES5 之前,保留字也不能用来作为对象常量中的属性名称或者键值,但是现在已经没有这个限制。
例如,下面的情况是不允许的:
var import = "42";
但是下面的情况是允许的:
var obj = { import: "42" }; console.log( obj.import );
需要注意的是,在一些版本较老的浏览器中(主要是 IE),这些规则并不完全适用,有时候将保留字作为对象属性还是会出错。所以需要在所有要支持的浏览器中仔细测试。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论