1.var缺点:
1.可重复声明
2.不限制修改
3.无块级作用域
2.let 不能重复声明,可以修改(变量),块级作用域
const 不能重复声明,不能修改(常量),块级作用域
(const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。)
为什么需要块级作用域?
ES5 只有全局作用域和函数作用域,没有块级作用域
1.内层变量可能会覆盖外层变量;2.用来计数的循环变量泄露为全局变量;
let:使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”