返回

ES6中变量声明的新面孔:let 与 const

前端

let 与 const 的语法与作用域

在ES6中,使用letconst来声明变量。let声明的变量具有块级作用域,而const声明的变量则具有常量性。

let

let声明的变量只在声明它的块级作用域内有效。也就是说,如果在一个块级作用域内声明了一个let变量,那么在这个块级作用域之外就无法访问该变量。块级作用域可以是函数、循环体、if-else语句体等。

例如:

function foo() {
  let x = 10;
  {
    let y = 20;
    console.log(x + y); // 30
  }
  console.log(x); // 10
  console.log(y); // ReferenceError: y is not defined
}

foo();

在上面的代码中,let x = 10声明的变量x在整个foo()函数内有效,而let y = 20声明的变量y只在foo()函数内的第一个块级作用域内有效。因此,在函数的最后一行代码中,无法访问变量y

const

const声明的变量是常量,这意味着它的值在声明后不能被改变。const变量的声明必须同时初始化,也就是说,必须在声明时为其赋值。

例如:

const PI = 3.1415926;
PI = 3.14; // TypeError: Assignment to constant variable.

在上面的代码中,const PI = 3.1415926声明了一个常量PI,并为其赋值3.1415926。随后,试图将PI的值修改为3.14时,会抛出一个TypeError异常。

let 与 const 与 var 的异同

letconst与传统的var变量声明方式相比,具有以下几个异同:

相同点

  • letconstvar都可以用来声明变量。
  • letconstvar声明的变量都可以使用=运算符赋值。

不同点

  • letconst声明的变量具有块级作用域,而var声明的变量具有函数级作用域。
  • const声明的变量是常量,其值在声明后不能被改变,而letvar声明的变量的值可以被改变。
  • const变量必须在声明时初始化,而letvar变量可以不初始化。

let 与 const 的使用建议

在ES6中,推荐使用letconst来声明变量,而不是varletconst可以帮助您编写出更清晰、更易维护的代码。

  • 使用let声明块级作用域内的变量。
  • 使用const声明常量。
  • 避免使用var来声明变量。