菜单

变量和严格模式规则

相关源文件

此页面记录了 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 规则值得特别关注,因为它强制避免了可能令人困惑的全局变量。

该规则特别禁止:

  1. isFinite - 建议使用 Number.isFinite 代替。
  2. isNaN - 建议使用 Number.isNaN 代替。
  3. 来自 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 等现代构建工具,这些工具会自动处理严格模式的插入。