块级声明用于声明在指定块的作用域之外无法访问的变量。这里的块级作用域是指函数内部或者字符块{}内的区域。
在ES 6中,let是一种新的变量声明方式。在函数作用域或全局作用域中,通过关键字var声明的变量,无论在哪里声明,都会被当成在当前作用域顶部声明的变量,这就是JavaScript的变量提升机制。
这种变量提升机制给开发工作带来了很多麻烦。在ES 6中,用let限制块级作用域,而var限制函数作用域。
使用let声明变量,还可以防止变量的重复声明。如果在某个作用域下已经存在某个标识符,此时再次使用let关键词声明它就会报错。例如以下代码:
虽然在同一个作用域下不能重复声明已经存在的标识符,但是在不同的作用域下是可以的。
JavaScript中的var只能声明一个变量,这个变量可以保存任何数据类型的值。ES 6之前并没有定义声明常量的方式,ES 6标准中引入了新的关键字const来定义常量。
使用const定义常量后,常量将无法改变,const常量的用法说明如下。
如果使用const声明变量,对象本身的绑定不能修改,但对象的属性和值可以修改: