此页面记录了 Airbnb JavaScript 风格指南中与变量和 JavaScript 严格模式相关的 ESLint 规则。这些规则有助于防止变量作用域、遮蔽、使用中的常见问题,并强制执行有关 JavaScript 严格模式的最佳实践。
有关 let/const 等 ES6 功能的规则,请参阅 ES6 规则。有关导入和导出规则,请参阅 导入规则。
Airbnb JavaScript 风格指南实施了一套全面的规则,以确保正确的变量处理和 JavaScript 严格模式的适当使用。
来源:packages/eslint-config-airbnb-base/rules/variables.js1-59 packages/eslint-config-airbnb-base/rules/strict.js1-6
下表总结了 Airbnb JavaScript 风格指南中定义的所有与变量相关的 ESLint 规则。
| 规则 | 状态 | 描述 |
|---|---|---|
init-declarations | 关闭 | 未强制要求在声明时初始化变量。 |
no-catch-shadow | 关闭 | 允许 catch 参数遮蔽外部作用域中的变量。 |
no-delete-var | 错误 | 禁止对变量使用 delete 操作符。 |
no-label-var | 错误 | 禁止使用与变量同名的标签。 |
no-restricted-globals | 错误 | 禁止使用特定的、有问题的全局变量。 |
no-shadow | 错误 | 禁止声明遮蔽外部作用域中变量的变量。 |
no-shadow-restricted-names | 错误 | 禁止遮蔽受限制的名称,如 arguments。 |
no-undef | 错误 | 禁止使用未声明的变量。 |
no-undef-init | 错误 | 禁止将变量显式初始化为 undefined。 |
no-undefined | 关闭 | 允许将 undefined 用作变量或标识符。 |
no-unused-vars | 错误 | 禁止声明未使用的变量。 |
no-use-before-define | 错误 | 禁止在使用变量之前使用它们。 |
来源:packages/eslint-config-airbnb-base/rules/variables.js4-58
no-restricted-globals 规则值得特别关注,因为它强制避免了可能令人困惑的全局变量。
该规则特别禁止:
isFinite - 建议使用 Number.isFinite 代替。isNaN - 建议使用 Number.isNaN 代替。confusing-browser-globals 包的许多浏览器全局变量,这些变量可能导致意外行为。来源:packages/eslint-config-airbnb-base/rules/variables.js18-34
no-unused-vars 规则配置了以下选项:
此配置允许出现以下情况:
来源:packages/eslint-config-airbnb-base/rules/variables.js54
no-use-before-define 规则可防止在变量定义之前引用它们。它配置为应用于:
这有助于维护清晰的代码流程,并防止因提升(hoisting)而引起的细微错误。
来源:packages/eslint-config-airbnb-base/rules/variables.js57
Airbnb JavaScript 风格指南仅定义了一条与 JavaScript 严格模式相关的规则:
| 规则 | 状态 | 配置 | 描述 |
|---|---|---|---|
strict | 错误 | 'never' | 禁止手动添加 'use strict' 指令。 |
该规则强制要求开发者永远不要在代码中添加 'use strict' 指令,因为 Babel 转译器会在需要时自动插入这些指令。这可以防止严格模式指令重复,并保持代码的整洁。
来源:packages/eslint-config-airbnb-base/rules/strict.js1-6
下图说明了变量规则如何协同工作以强制执行良好实践。
来源:packages/eslint-config-airbnb-base/rules/variables.js1-59
Airbnb JavaScript 风格指南提供了一套全面的变量和严格模式规则,有助于防止常见错误并强制执行最佳实践。通过禁止变量遮蔽、要求在使用变量前正确声明、防止使用令人困惑的全局变量以及管理严格模式指令,这些规则可以创建更易于维护且出错更少的代码库。
变量规则侧重于防止常见的 JavaScript 陷阱,如提升问题和变量遮蔽。同时,严格模式规则利用 Babel 等现代构建工具,这些工具会自动处理严格模式的插入。