ES6 块级作用域
var 声明
在函数作用域或全局作用域中通过var声明的遍历,不管是哪里声明的,都会当成当前作用域顶部声明的变量。(常说的提升机制)
var声明缺少块级作用域的概念。
举例说明:
上面三个地方都可以访问value 值为undefined;
let声明
let声明的用法与var相同。用let代替var声明变量,可以吧变量的作用域限制在当前的代码块中。let没有提升机制,所以通常将let声明语句放在封闭代码块的顶部,以便代码块都可以访问;
上面三处都不能访问value,只有在demo为真的时候才创建value 并赋值{}之外都不能访问。
let禁止重声明
同一作用域不能用let重复定义已经存在的表示符。
const声明
使用const声明的是常量,值设定后不可更改。所以通过const声明的常量必须进行初始化
不初始化将报错
const声明与let最大的不同是const定义的常量不能重新赋值,否则会报错