ES 6
1.let const
var a = []; for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); // 10
由于这里的i是var申明的,全局都是这一个i,当循环结束 i=10,注意最后面的i++,所以最后输出的是10.
上面改成let,则不会,因为在每一个作用域内,i都是单独的。
2.不存在变量提示
console.log(foo); var foo = 3
1.let const
var a = []; for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); // 10
由于这里的i是var申明的,全局都是这一个i,当循环结束 i=10,注意最后面的i++,所以最后输出的是10.
上面改成let,则不会,因为在每一个作用域内,i都是单独的。
2.不存在变量提示
console.log(foo); var foo = 3