背景
在javaScript中,定义变量是一个非常常见的操作,在Es5中,通常使用var定义声明变量,而在Es6中新增了let和const关键字,也是用于声明定义变量
那究竟在什么样的情况下使用它们,解决自己开发过程当中定义变量的一些困扰...为什么使用Let,const定义变量更节省内存?...tmp的声明被提升至函数顶部,而初始化操作依旧停留在原处执行,这就意味着else中的也可以访问到该变量tmp,因为此时变量还没有初始化,只有定义,但没有赋值,所以值是undefined
场景2-用来计数循环变量泄露为全局变量...2;
上面的i变量只是用来控制循环,但是循环结束后,它并没有消失,释放,而是泄露成了全局变量,这样会造成全局变量的污染
解决办法:
使用let定义变量的话,那么for循环的计数器变量i,只在for循环内有效...window对象),使用var会覆盖一个已经存在的全局变量
let,const和class命令声明的全局变量不属于全局对象的属性,声明的变量不会提升,而且只可以在声明这些变量的代码块中使用
不能在声明变量前访问它们