JavaScript中的变量声明:let

ES6引入了let关键字来声明所有类型的数据(如布尔值,对象,整数等)的变量。

在上一篇文章《JavaScript中的变量声明:var》中,我们讨论了JavaScript中用var关键字的作用域及提升。

let

  • 在Javascript中,let关键字声明了一个块作用域变量。
  • 不能再次声明相同的变量,但可以再次对其进行赋值。
  • let声明的变量不会被提升(hoisted)。

1. 语法

下面的例子中,我们用let来声明两个变量xy

2. 块作用域

let声明的变量会创建块作用域。

示例1:

这里let创建了一个块作用域,food只能在if语句块中访问,出了if语句就不能再访问。

示例2:

因为i的作用域只有在for循环里面,因此在for语句之外无法访问变量i

3. 重新声明和初始化

使用let我们无法重新声明变量,否则JavaScript引发语法错误。一个变量只能声明一次,但是变量可以用任何值重新初始化。

不能重新声明

重新赋值

注意:如果我们仅使用let声明变量而未赋值,则其默认值是undefined,而不是null。稍后,当代码执行到变量赋值时,新值将替换undefined值。

4. 不会被提升

let声明不会被提升,因此,如果我们尝试在声明变量之前访问变量,则Javascript会引发错误。