JavaScript 中`const`、`let` 和 `var` 声明变量关键字区别

152 阅读2分钟

在 JavaScript 中,constletvar 是用于声明变量的关键字,它们在作用域、可变性和变量提升等方面有一些区别。

  1. var
    • 函数作用域:var 声明的变量具有函数作用域,即在声明的函数内部可见。
    • 变量提升:var 声明的变量会被提升到函数或全局作用域的顶部。这意味着可以在变量声明之前访问变量,但其值为 undefined
    • 可重复声明:var 允许对同一变量进行多次声明,而后续的声明会覆盖之前的声明。
    • 没有块级作用域:var 声明的变量在块级作用域(如 iffor 语句块)中仍然是可见的。
  2. let
    • 块级作用域:let 声明的变量具有块级作用域,即在声明的块(如 {} 内部)中可见。
    • 不存在变量提升:let 声明的变量不会被提升,只有在声明之后才能访问。
    • 不可重复声明:在同一作用域内,不允许对同一变量使用 let 进行重复声明。
  3. const
    • 块级作用域:const 声明的变量具有块级作用域,类似于 let
    • 常量:const 声明的变量是常量,其值在声明后不能被修改。
    • 不可重复声明:在同一作用域内,不允许对同一变量使用 const 进行重复声明。
    • 对象和数组的可变性:const 声明的变量不能被重新赋值,但如果变量是对象或数组,其内部的属性或元素可以被修改。

总结:

  • 使用 letconst 可以更好地控制变量的作用域,并避免变量提升和重复声明的问题。
  • const 用于声明常量,适用于那些不需要重新赋值的变量。
  • var 在现代 JavaScript 开发中用得较少,但仍然可以在特定情况下使用,例如需要兼容旧版浏览器或需要特定的作用域行为时。