大家好,我是橘朵~ 上一篇我们吃透了JS的核心语言规则,尤其是命名规则里提到“不能使用关键字和保留字”——很多新手可能会困惑:到底哪些词是关键字?保留字又是什么?为什么不能用它们当变量名、函数名?
其实关键字和保留字就是JS语法的“红线”,只要吃透它们,就能彻底避开“命名报错”的低级坑。
阅读收获:分清关键字与保留字的区别,记住常用关键字和保留字,掌握使用规则,避开命名陷阱,能独立写出符合规范、不报错的标识符(变量名、函数名等)。
1. 什么是关键字与保留字?
关键字和保留字都是JS里“有特殊用途”的单词,他们有固定的用法,不能随便拿来当名字。
核心区别:
- 关键字:JS当前正在使用的“工具”,有明确的语法功能(比如
let用来声明变量、function用来定义函数),绝对不能用作标识符; - 保留字:JS暂时没使用,但为未来版本预留的“工具”,虽然现在可能不报错,但为了兼容性,绝对不推荐使用(避免后续JS更新后,代码报错)。
无论是关键字还是保留字,都不能用作变量名、函数名、类名、标签名(这些都属于标识符),但有一个例外——在对象的属性名中可以使用(比如{ import: "some value" }是合法的),虽然合法但并不推荐,在实际开发中尽量避免。
2.常用关键字
按照规定,保留的关键字不能用作标识符或属性名。 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, yield,let。
JS的关键字有很多,不用死记硬背,按功能分类记忆,更高效。
2.1. 变量/常量声明相关
这类关键字用于声明变量、常量,比如let、const、var。
// 错误写法:用关键字当变量名(报错)
// let let = "变量"; // 报错:Unexpected token 'let'(let是关键字,不能当变量名)
// const const = 10; // 报错:Unexpected token 'const'
// var var = 20; // 报错:Unexpected token 'var'
// 正确写法:用合法标识符
let userName = "橘朵";
const PI = 3.14;
常用关键字:let、const、var、class(类声明)、function(函数声明)、import(导入模块)、export(导出模块)。
2.2. 流程控制相关
这类关键字用于控制代码执行顺序,比如if、for、while等。
// 错误写法:用流程控制关键字当函数名(报错)
// function if() { // 报错:Unexpected token 'if'
// console.log("测试");
// }
// 正确写法:合法函数名
function judgeCondition() {
console.log("测试");
}
常用关键字:if、else、switch、case、break、continue、for、while、do、return、throw、try、catch、finally。
2.3. 其他常用关键字
这类关键字有特殊功能,比如this、new、delete等。
// 错误写法:用其他关键字当变量名(报错)
// let this = "当前对象"; // 报错:Unexpected token 'this'
// let new = "新建"; // 报错:Unexpected token 'new'
// let delete = "删除"; // 报错:Unexpected token 'delete'
// 正确写法:合法标识符
let currentObj = "当前对象";
let createNew = "新建";
let deleteData = "删除";
常用关键字:this(指向当前对象)、new(创建对象)、delete(删除对象属性)、in(判断属性是否存在)、instanceof(判断类型)、typeof(检测类型)、void(返回undefined)、yield(生成器函数)、default(默认分支)、debugger(调试)、with。
2.4. 布尔值/空值相关(特殊关键字)
true、false(布尔值)、null(空值)也是关键字,不能用作标识符。
// 错误写法:用布尔值/空值关键字当变量名(报错)
// let true = 1; // 报错:Unexpected token 'true'
// let false = 0; // 报错:Unexpected token 'false'
// let null = "空"; // 报错:Unexpected token 'null'
// 正确写法:合法标识符
let isTrue = 1;
let isFalse = 0;
let emptyValue = "空";
3. 保留字(避免使用)
保留字是JS为未来版本预留的单词,当前版本可能不报错,但一旦JS更新,这些单词可能会成为新的关键字,导致代码报错,所以应该避免使用保留字作为标识符。
常用保留字: abstract, boolean, byte, char, double, enum, final, float, goto, int, long, native, short, synchronized, throws, transient, volatile
// 不推荐写法:用保留字当变量名(当前可能不报错,未来可能报错)
// let enum = "枚举"; // 不推荐,enum是保留字
// let int = 10; // 不推荐,int是保留字
// 正确写法:合法标识符
let enumType = "枚举";
let intNum = 10;
4. 特殊情况:严格模式下的保留字(额外限制)
启用严格模式("use strict";)后,JS的语法限制会更严格,有一些单词在非严格模式下可以用作标识符,但在严格模式下会被当作保留字,不能使用。
严格模式下的保留字: await, implements, interface, let, package, private, protected, public, static
// 非严格模式下(可能不报错,不推荐)
// let let = "变量"; // 非严格模式下可能不报错,但不推荐
// let package = "包"; // 非严格模式下可能不报错,但不推荐
// 严格模式下(报错,绝对不能用)
"use strict";
// let let = "变量"; // 报错:Unexpected token 'let'
// let package = "包"; // 报错:Unexpected token 'package'
// let await = "等待"; // 报错:Unexpected token 'await'
5. 核心规则:关键字与保留字的使用禁忌
-
规则1:无论是关键字还是保留字,都不能用作变量名、函数名或标签名,违反会直接报错。严格模式(
'use strict';)下,限制会更加严格。 -
规则2:在对象的属性名中是可以使用的关键字。例如:
{ import: "some value" }是合法的,但实际开发中尽量避免,提升代码可读性。 -
规则3:标识符要见名知意、用驼峰/帕斯卡/全大写命名,同时避开所有关键字和保留字
6. 结尾总结
这篇文章,我们讲了JS的关键字与保留字,核心就是记住“红线”:关键字是当前正在用的“工具”,绝对不能用;保留字是未来预留的“工具”,尽量避开。不用死记硬背,按分类记忆,结合前3篇的命名规则,就能写出规范、不报错的标识符。
总结一下核心要点:
- 关键字:有明确语法功能,绝对不能用作标识符(变量名、函数名等);
- 保留字:未来可能成为关键字,无论当前是否报错,都不推荐使用;
- 严格模式下,有额外的保留字限制(如
await、package),启用严格模式后需格外注意; - 唯一例外:关键字可用于对象属性名,实际开发中尽量避免;
- 结合命名规则:见名知意、规范命名,同时避开所有关键字和保留字。
下一篇文章,我们将聚焦「变量声明」——搞懂var、let、const的区别和用法。