1. 概述
保留字(Reserved Words)是 JavaScript 预留的一些标识符名(IdentifierName),保留字不能用作变量、函数名、和对象名。
在 ES 规范中,保留字定义如下:
ReservedWord :: |
保留字包括:关键字、未来保留字、Null 字面量,布尔字面量。
Null 字面量只有 1 个值:null
。
布尔字面量包括 2 个值:true
和 false
。
未来保留字被用作未来语言特性扩展时可能会使用到的关键字,因此保留。
2. ES6(ES2015) 关键字
ES6(ES2015) 的关键字有 33 个:
break |
未来保留字有 2 个:
enum |
当下列 tokens 出现在严格模式代码 (strict mode code )里,将被当成是未来保留字(FutureReservedWords):
implements |
在某些特定上下文中,yield
可以被赋予标识符的语义。
以下代码都是正确的:
var yield = 0; |
在严格模式代码中,let
和 static
通过静态语义(static semantic)限制,而不是词法语法分析(lexical grammar)作为保留关键字处理。
function foo() { |
3. ES7(ES2016) 关键字
ES7 没有新增保留字。
4. ES8(ES2017) 关键字
await
从未来保留字(FutureReservedWords)变成了关键字。语义和 yield
一样。
以下代码都是正确的:
var await = 0; |
5. 其它
ES7(ES2016) 新增了异步函数,但是在现行规范里面,async
并不是关键字(???)。但是从代码表现的行为来看,async
也类似与 await
和 yield
。
没有进入关键字的还有 get
和 set
。