JavaScript 中的保留关键字是预定义的关键字,用于提供编程语言的内置功能。例如,var 和 let 关键字用于定义变量,function 关键字用于定义函数等。JavaScript 包含超过五十个保留关键字。
简单来说,你不能将保留关键字用作标识符。如果你这样做了,将会产生冲突,并且代码会产生错误的输出或抛出错误。
例如,下面的代码将会抛出一个错误,因为 function 被用作标识符。
var function = "Hello";
保留关键字
以下是不能用作标识符的保留关键字列表:
| 关键字 |
关键字 |
关键字 |
关键字 |
| abstract |
double |
implements |
return |
| arguments |
else |
in |
switch |
| await |
enum |
instanceof |
synchronized |
| boolean |
eval |
int |
this |
| break |
export |
interface |
throw |
| byte |
extends |
let |
throws |
| case |
false |
long |
transient |
| catch |
final |
native |
true |
| char |
finally |
new |
try |
| class |
float |
null |
typeof |
| const |
for |
package |
var |
| continue |
function |
private |
void |
| debugger |
goto |
protected |
volatile |
| default |
if |
public |
yield |
| delete |
implements |
short |
while |
| do |
import |
static |
with |
| double |
in |
super |
|
在 ES5 和 ES6 中添加的保留关键字
一些新的关键字被添加到了 JavaScript 的 ES5 和 ES6 版本中。然而,有些目前已经在使用中,而有些关键字是为未来版本保留的。
| 关键字 |
关键字 |
关键字 |
关键字 |
| await |
class |
enum |
export |
| extends |
import |
let |
super |
已移除的保留关键字
一些保留关键字已经被从 JavaScript 中移除,虽然你不能用它们来实现特定的功能。然而,你仍然不能将下面的关键字用作标识符,因为很多浏览器并不支持它们。
| 关键字 |
关键字 |
关键字 |
关键字 |
| abstract |
boolean |
byte |
char |
| double |
final |
float |
goto |
| int |
long |
native |
short |
| synchronized |
throws |
transient |
volatile |
JavaScript 对象、属性和方法
你不应该将 JavaScript 内置对象、属性和方法的名字用作标识符。
JavaScript 内置对象
| 对象 |
| Array |
| ArrayBuffer |
| Boolean |
| DataView |
| Date |
| Error |
| eval |
| Float32Array |
| Float64Array |
| Function |
| Generator |
| GeneratorFunction |
| Int8Array |
| Int16Array |
| Int32Array |
| Intl |
| JSON |
| Map |
| Math |
| Number |
| Object |
| Promise |
| Proxy |
| RangeError |
| ReferenceError |
| Reflect |
| RegExp |
| Set |
| String |
| Symbol |
| SyntaxError |
| TypeError |
| Uint8Array |
| Uint8ClampedArray |
| Uint16Array |
| Uint32Array |
| URIError |
| WeakMap |
| WeakSet |
JavaScript 内置属性
| 属性 |
| length |
| constructor |
| prototype |
| proto |
| caller |
| callee |
JavaScript 方法
| 方法 |
| toString |
| shift |
| indexOf |
| split |
| toLocaleString |
| unshift |
| lastIndexOf |
| substr |
| valueOf |
| slice |
| includes |
| substring |
| toLocaleDateString |
| splice |
| isArray |
| toLowerCase |
| toLocaleTimeString |
| sort |
| from |
| toLocaleLowerCase |
| toLocaleString |
| forEach |
| of |
| toUpperCase |
| toLocaleUpperCase |
| toFixed |
| map |
| charAt |
| toLocaleUpperCase |
| toExponential |
| filter |
| charCodeAt |
| trim |
| toPrecision |
| reduce |
| codePointAt |
| startsWith |
| concat |
| reduceRight |
| normalize |
| endsWith |
| join |
| every |
| repeat |
| match |
| pop |
| some |
| replace |
| test |
| push |
| find |
| search |
| reverse |
| findIndex |
| slice |
其他保留关键字
JavaScript 可以与其他编程语言如 HTML、Java 等一起使用。因此,你也应该避免那些在 HTML、Java 等语言中保留的关键字。
以下是一些其他保留关键字列表,其中大多数是 window 对象的属性。
| 关键字 |
关键字 |
关键字 |
关键字 |
| alert |
elements |
frameRate |
radio |
| all |
embed |
hidden |
reset |
| anchor |
embeds |
history |
screenX |
| anchors |
encodeURI |
image |
screenY |
| area |
encodeURIComponent |
images |
scroll |
| assign |
escape |
offscreenBuffering |
|
| blur |
event |
open |
select |
| button |
fileUpload |
opener |
self |
| checkbox |
focus |
option |
setInterval |
| clearInterval |
form |
outerHeight |
setTimeout |
| clearTimeout |
forms |
outerWidth |
status |
| clientInformation |
frame |
packages |
submit |
| close |
innerHeight |
pageXOffset |
taint |
| closed |
innerWidth |
pageYOffset |
text |
| confirm |
layer |
parent |
textarea |
| constructor |
layers |
parseFloat |
top |
| crypto |
link |
parseInt |
unescape |
| decodeURI |
location |
password |
untaint |
| decodeURIComponent |
mimeTypes |
pkcs11 |
window |
| defaultStatus |
navigate |
plugin |
document |
| navigator |
prompt |
element |
frames |
| propertyIsEnum |
|
|
|
HTML 事件处理器
你不应该将 HTML 事件处理器作为 JavaScript 中的变量名使用。
以下是一些事件处理器:
| 事件处理器 |
事件处理器 |
事件处理器 |
事件处理器 |
| onclick |
ondblclick |
onmouseover |
onmouseout |
| onmousemove |
onkeydown |
onkeyup |
onkeypress |
| onfocus |
onblur |
onchange |
onsubmit |
| onreset |
onload |
onunload |
onresize |
| onscroll |
|
|
|
总之,你应该避免将上述所有的关键字用作变量名或函数名。