本文档涵盖了 Airbnb JavaScript 风格指南中定义的类型、变量和引用的核心 JavaScript 基础知识。理解这些概念对于编写可维护和可预测的 JavaScript 代码至关重要。有关对象、数组及相关概念的信息,请参阅对象、数组和解构。
JavaScript 有两大类类型:原始类型和复杂类型(对象)。理解它们存储和访问方式的差异对于编写正确的代码至关重要。
JavaScript 中的原始类型通过值访问,这意味着当你处理它们时,你处理的是它们的实际值,而不是引用。
当你复制一个原始值时,你会得到一个完全独立的副本。
重要提示:Symbols 和 BigInts 无法正确地进行 polyfill,因此在针对不支持它们的旧环境时,请避免使用它们。
复杂类型通过引用访问,这意味着当你处理它们时,你处理的是它们值的一个引用,而不是值本身。
当你复制一个复杂值时,两个副本都引用相同的基础数据。
Airbnb 风格指南对变量声明有具体的建议,以提高代码清晰度和避免常见问题。
constAirbnb 风格指南强烈建议对所有引用都使用 const,除非变量需要重新赋值。这可以防止意外的重新赋值,并使代码更易于理解。
let当变量必须重新赋值时,请使用 let 而不是 var。这提供了块级作用域,更直观且能避免许多常见错误。
const 和 let 都是块级作用域,而 var 是函数作用域。理解这种区别至关重要。
用 let 和 const 声明的变量只能在其定义的块内访问。用 var 声明的变量可以在整个函数内访问。
Airbnb 风格指南提供了几个关于处理变量的最佳实践。
每个变量使用一个 const 或 let 声明。这使得添加新声明更容易,并避免了仅包含标点符号的 diff。
将所有 const 声明放在一起,然后是所有 let 声明。这提高了可读性,并使依赖关系更清晰。
将变量声明放在它们需要的地方,利用块级作用域。
不要链式赋值变量,这会创建隐式全局变量。
避免使用一元递增和递减运算符(++,--)。而是使用更明确的赋值运算符。
理解提升对于处理 JavaScript 变量至关重要。
var 进行提升用 var 声明的变量,其声明会被提升到作用域顶部,但赋值仍保留在原地。
const 和 let 的暂时死区(Temporal Dead Zone)用 const 和 let 声明的变量也会被提升,但它们被置于“暂时死区”中,直到到达它们的声明。
函数声明会被完全提升,而函数表达式只提升其变量名。
遵循“变量、类和函数应在使用前定义”的原则,可以提高代码的可读性并避免与提升相关的错误。
下表总结了变量声明方法之间的区别。
| 功能 | const | let | var |
|---|---|---|---|
| 可重新赋值 | 否 | 是 | 是 |
| 范围 | 模块 | 模块 | 功能 |
| 提升 (Hoisting) | 暂时死区 | 暂时死区 | 声明为 undefined |
| 重新声明 | 否 | 否 | 是 |
| 最适合 | 大多数引用 | 需要重新赋值的变量 | 在现代代码中应避免使用 |
来源:README.md README.md README.md
const 进行所有引用;只有当变量需要重新赋值时才使用 let。var - 它会创建函数作用域变量,可能导致意外行为。const 声明分组,然后是 let 声明。