var、let 和 const 是 JavaScript 中用于声明变量的关键字,它们之间有一些重要的区别。

72 阅读1分钟
  1. 作用域:

    • var:具有函数作用域,意味着变量在声明它的函数内有效,而在函数外无效。
    • letconst:具有块级作用域,意味着变量在声明它的块(例如,if语句或循环)内有效,而在块外无效。
  2. 变量提升:

    • var:会被提升到其所在函数的顶部,但初始化值为 undefined
    • letconst:不会被提升,访问会导致一个暂时性死区(Temporal Dead Zone,TDZ)错误,即在声明之前访问变量会抛出错误。
  3. 重复声明:

    • var:可以被重复声明而不会抛出错误。
    • letconst:在同一作用域内不能重复声明相同的变量名。
  4. 赋值和重新赋值:

    • varlet:可以被赋值和重新赋值。
    • const:声明时必须初始化,并且一旦赋值就不能再重新赋值。
  5. 全局对象属性:

    • varlet:在全局作用域中声明的变量会成为全局对象的属性(在浏览器中,window 对象)。
    • const:在全局作用域中声明的 const 变量不会成为全局对象的属性。

总的来说,推荐使用 letconst,尤其是在 ES6+ 的环境中,因为它们提供了更好的作用域控制和不可变性。const 尤其适合那些不需要重新赋值的变量。