保留关键字

JavaScript 具有预定义的预留关键字集合,你不能将其用作变量,标签或函数名称

ECMAScript 1

Version = 1

A - E. E - R. S - Z.
break export super
case extends switch
catch false this
class finally throw
const for true
continue function try
debugger if typeof
default import var
delete in void
do new while
else null with
enum return

ECMAScript 2

添加了 24 个其他保留关键字 (新增加粗体)。

Version = E4X

A - F. F - P. P - Z.
abstract final public
boolean finally return
break float short
byte for static
case function super
catch goto switch
char if synchronized
class implements this
const import throw
continue in throws
debugger instanceof transient
default int true
delete interface try
do long typeof
double native var
else new void
enum null volatile
export package while
extends private with
false protected

ECMAScript 5 / 5.1

ECMAScript 3 以来没有任何变化。

ECMAScript 5 删除了 intbytechargotolongfinalfloatshortdoublenativethrowsbooleanabstractvolatiletransientsynchronized; 它添加了 letyield

A - F. F - P. P - Z.
break finally public
case for return
catch function static
class if super
const implements switch
continue import this
debugger in throw
default instanceof true
delete interface try
do let typeof
else new var
enum null void
export package while
extends private with
false protected yield

implementsletprivatepublicinterfacepackageprotectedstaticyield在严格模式下不允许

evalarguments 不是保留字,但它们在严格模式下表现得像。

ECMAScript 6 / ECMAScript 2015

A - E. E - R. S - Z.
break export super
case extends switch
catch finally this
class for throw
const function try
continue if typeof
debugger import var
default in void
delete instanceof while
do new with
else return yield

未来保留关键字

以下是 ECMAScript 规范保留的未来关键字。它们目前没有特殊功能,但它们可能在将来某个时间使用,因此它们不能用作标识符。

enum

只有在严格模式代码中找到以下内容时才会保留以下内容:

implements package public
interface private static
let protected

旧标准中的未来保留关键字

以下是旧 ECMAScript 规范(ECMAScript 1 至 3)保留的未来关键字。

abstract float short
boolean goto synchronized
byte instanceof throws
char int transient
double long volatile
final native

此外,文字 null,true 和 false 不能用作 ECMAScript 中的标识符。

来自 Mozilla 开发者网络