如:
var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6] () // 显示10
let解决块中变量提升带来的麻烦
for (let i = 0; i < 10; i++) {
// ...
}
const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。所以对于结构体或数组,指向内存地址所保存的值是一个地址地址,所以其中包含的其他元素值可以发生改变:
const a = [];
a.push(‘Hello‘); // 可执行
a.length = 0; // 可执行
a = [‘Dave‘]; // 报错,a为产量是不能赋予前他新的数组地址值
原文:http://blog.51cto.com/13238147/2320429