返回

现代 JavaScript 变量声明:let、const 和 var

前端

var、let 和 const 的区别

特性 var let const
声明类型 var 声明变量 let 声明块级变量 const 声明常量
作用域 var 具有函数作用域 let 和 const 具有块级作用域
可变性 var 声明的变量是可变的 let 声明的变量是可变的 const 声明的变量是常量,不可变
暂时性死区 var 没有暂时性死区 let 和 const 具有暂时性死区
提升 var 声明的变量会提升到函数顶部 let 和 const 声明的变量不会提升

var 的用法

var 是 JavaScript 中最古老的变量声明。它声明的变量具有函数作用域,这意味着变量可以在声明它的函数的任何地方使用。var 声明的变量也是可变的,这意味着变量的值可以随时更改。

function example() {
  var x = 10;
  x = 20;
  console.log(x); // 20
}

example();

let 的用法

let 是 ES6 中引入的新变量声明关键字。它声明的变量具有块级作用域,这意味着变量只能在声明它的块中使用。块可以是函数、if 语句、for 循环等。let 声明的变量也是可变的。

function example() {
  if (true) {
    let x = 10;
    console.log(x); // 10
  }

  console.log(x); // ReferenceError: x is not defined
}

example();

const 的用法

const 是 ES6 中引入的另一个新变量声明关键字。它声明的变量是常量,这意味着变量的值不能更改。const 声明的变量也具有块级作用域。

function example() {
  const x = 10;
  x = 20; // TypeError: Assignment to constant variable.
  console.log(x); // 10
}

example();

选择合适的变量声明关键字

在 JavaScript 中,选择合适的变量声明关键字非常重要。var、let 和 const 都有各自的优缺点,在不同的情况下应该使用不同的关键字。

  • 如果需要在函数的任何地方使用变量,可以使用 var 声明变量。
  • 如果需要在块中使用变量,可以使用 let 或 const 声明变量。
  • 如果需要声明常量,可以使用 const 声明变量。

总结

let、const 和 var 是 JavaScript 中声明变量的三个关键字。var 具有函数作用域,let 和 const 具有块级作用域。var 声明的变量是可变的,let 声明的变量是可变的,const 声明的变量是常量。在不同的情况下应该使用不同的关键字。