📜  var、let、const 之间的区别 - Javascript (1)

📅  最后修改于: 2023-12-03 15:35:33.974000             🧑  作者: Mango

var、let、const 之间的区别 - Javascript

在Javascript中,变量的声明方式有三种: varletconst。这三种方式的使用场景和特性有些不同,接下来我们一一介绍。

var

var 是早期Javascript中声明变量的方式。它的作用域是函数级别的,即只有在函数内部才能访问它。而在函数外部声明的变量会变成全局变量,容易引发作用域污染的问题。

function foo(){
  var x = 10;
  if (true) {
    var x = 20;
    console.log(x); // 20
  }
  console.log(x); // 20
}

foo();

在上述示例中,var 声明的 x 变量作用域为整个函数,因此在 if 语句内部重新对 x 赋值后,会影响到函数内 x 变量的值。

let

let 是为了解决 var 带来的问题而引入的新的声明方式。它作用的范围是块级别的,即在块内部有效,包括 forif 等语句块,则在函数内部声明的变量不会影响到全局作用域。

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

foo();

在上述示例中,let 声明的 x 变量作用域为 if 语句块内,因此在 if 语句块内部重新对 x 赋值后,不会影响到函数内 x 变量的值。

const

const 是用来声明常量的,与 let 类似,它作用的范围也是块级别的。但与 let 不同的是,用 const 声明的变量必须在定义时初始化,并且不能再次赋值。

function foo(){
  const x = 10;
  if (true) {
    const x = 20;
    console.log(x); // 20
  }
  console.log(x); // 10
}

foo();

在上述示例中,const 声明的 x 变量应用场景通常是声明一个不会改变的值,类似于数学中的常量。

总结
  • var 声明的变量作用域是函数级别的,可以被重新定义、覆盖和改变。
  • let 声明的变量作用域是块级别的,不可以被重新定义但可以被覆盖和改变。
  • const 声明的变量作用域是块级别的,不可以被重新定义、覆盖和改变,用于声明一个不会改变的值。