ES6 增加let命令声明变量,类似于var,但是所声明的变量,只在let声明的变量只在声明所在的代码块内有效,无法变量提升,可以解决for块中条件变量的使用问题。
如:
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为产量是不能赋予前他新的数组地址值