在JavaScript的世界里,标识符是我们赋予变量、常量、函数、类等的名字。这些名字不仅仅是随意的字符组合,它们需要遵循一定的规则。首先,一个合法的标识符应该以字母、下划线(_)或者美元符号($)开头。紧随其后的字符可以是字母、数字、下划线或者美元符号,但是请注意,数字不能作为标识符的首字符,这样做可以帮助JavaScript更容易地区分标识符和数字。
举个例子,这些都是合法的标识符:i
、my_variable_name
、v13
、dummy
、$str
。这些名字可以用来标记各种类型的数据,帮助我们在代码中引用它们。
然而,并不是所有的字符组合都可以用来作为标识符。JavaScript语言本身保留了一些词汇,这些“保留字”不能被用作普通的标识符。这些保留字包括了控制结构的关键词,如if
、while
、for
等,它们在JavaScript代码中扮演着特殊的角色,因此不能用作常量、变量、函数或类的名称。但是,它们可以作为对象内的属性名称。
另外,有些词汇如from
、of
、get
和set
在特定的上下文中使用,没有语法歧义,因此它们可以合法地作为标识符。还有一些关键词,比如let
,由于需要与旧程序保持向后兼容性,它们不能完全被保留,因此存在一些复杂的规则来决定何时可以将它们用作标识符。
为了避免混淆,最简单的做法是尽量避免使用这些保留字作为标识符,除了from
、set
和target
,这些已经被广泛使用且安全的词汇。
此外,JavaScript还保留或限制了某些目前尚未被语言使用但可能在将来的版本中使用的关键词,例如enum
、implements
、interface
等。出于历史原因,arguments
和eval
在某些情况下不允许作为标识符,并且最好完全避免使用。
以下是JavaScript中所有保留字的列表,它们被分为几个不同的类别:
常规保留字:
关键字 | 关键字 | 关键字 | 关键字 | 关键字 |
---|---|---|---|---|
break | case | catch | class | const |
continue | debugger | default | delete | do |
else | export | extends | false | finally |
for | function | if | import | in |
instanceof | new | null | return | super |
switch | this | throw | true | try |
typeof | var | void | while | with |
严格模式下的保留字:
关键字 | 关键字 | 关键字 |
---|---|---|
let | static | yield |
模块代码中的保留字:
关键字 |
---|
await |
未来可能会成为保留字的关键字:
关键字 | 关键字 | 关键字 | 关键字 | 关键字 |
---|---|---|---|---|
enum | implements | interface | package | private |
protected | public |
在旧的ECMAScript标准中保留的关键字:
关键字 | 关键字 | 关键字 | 关键字 | 关键字 |
---|---|---|---|---|
abstract | boolean | byte | char | double |
final | float | goto | int | long |
native | short | synchronized | throws | transient |
volatile |
请注意,这些保留字可能会随着JavaScript语言的发展而发生变化。开发者在选择变量名和函数名时,应避免使用这些保留字,以免引起不必要的语法错误。