最近出去观望一下,发现很多人喜欢问es6,所以我决定定期写一写关于se6都有哪些好玩的东西,今天先说一下烂大街的let
个人感觉之所有有let还是因为var有几点不足之处:
首先是作用域的问题,其次是变量提升
-
var arr = [ ]; for(var i=0; i<10; i++){ arr [i] = () => { console.log(i) } } arr[1]();
先不说原因,继续向下看:var arr = [ ]; for(let i=0; i<10; i++){ arr [i] = () => { console.log(i) } } arr[1]();
这是因为let声明的变量仅仅在自己的块级作用域起作用,出了这个块级作用域就不起作用,如果用var声明,就不是这种情况了,i 的值会影响到各个块里面的 i,等循环完后 i 等于10,所有块的i都变成了10了 - 变量提升,我觉得没啥可说的就不说了
还有几点要注意的:
同一个块级作用域内,不允许重复声明同一个变量。
函数内不能用let重新声明函数的参数
用let声明变量只在块级作用域起作用,适合在for循环使用(个人理解哈)