ES6 块级作用域

var 声明
     在函数作用域或全局作用域中通过var声明的遍历,不管是哪里声明的,都会当成当前作用域顶部声明的变量。(常说的提升机制)
     var声明缺少块级作用域的概念。
举例说明: 上面三个地方都可以访问value 值为undefined;

 
let声明
     let声明的用法与var相同。用let代替var声明变量,可以吧变量的作用域限制在当前的代码块中。let没有提升机制,所以通常将let声明语句放在封闭代码块的顶部,以便代码块都可以访问;
上面三处都不能访问value,只有在demo为真的时候才创建value 并赋值{}之外都不能访问。
 
let禁止重声明 同一作用域不能用let重复定义已经存在的表示符。

const声明
     使用const声明的是常量,值设定后不可更改。所以通过const声明的常量必须进行初始化
     不初始化将报错
 
     const声明与let最大的不同是const定义的常量不能重新赋值,否则会报错
原文地址:https://www.cnblogs.com/webtall/p/7238607.html