,const定义变量,因为它不存在变量提升,所以,变量一定要在声明后使用,否则会报错
console.log(tmp); // ReferenceError
let tmp = 2;
上面的i变量只是用来控制循环...)作用域
正因为Es5中使用var声明的变量,没有块级作用域,会污染全局变量,如果使用不当,会产生一些达不到自己预期的效果,所以在Es6中就有了块级作用域
块级作用域:用于声明在指定的块的作用域之外无法访问的变量...";
console.log(tmp);
}
在let命令声明变量tmp之前,都属于变量的tmp的死区
之所以定义暂时性死区,和不存在变量的提升,主要是为了减少运行时的错误,防止在变量声明之前就使用这个变量...,从而导致一些Bug
暂时性死区的本质是: 只要一进入当前作用域,所使用的变量就已存在,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量
04
为什么使用let,const声明变量可节省内存空间...(浏览器环境中的window对象),使用var会覆盖一个已经存在的全局变量
let,const和class命令声明的全局变量不属于全局对象的属性,声明的变量不会提升,而且只可以在声明这些变量的代码块中使用