Javascript/ES6 let和const用法
let关键词是创建绑定到任何代码块(称为块作用域block scoping)的声明,相比使用var,它提供了函数的作用域,因此在JS6中推荐使用let,let声明的变量可以再分配:
var a = 2;
{
let a = 3;
console.log(a); // 3
}
console.log(a); // 2
我们看看let在循环中的应用:
for (let i in usernames) {
_fetchProfiles('/users/' + usernames[i], function () {
console.log("fetched ", usernames[i]);
});
}
另外一个代码块作用域的声明是const,const声明的只读常量不可以再分配,它定义了一个常量,这个常量指向一个值,换句话说,这个值不是不可变的,只是分配给了它:
{ const ARR = [5,6]; ARR.push(7); console.log(ARR); // [5,6,7] ARR = 10; // TypeError
}
一些事情需要记住:
- 当使用let关键词时,不会发生变量提升(Hoisting)
- let和const的作用域是最靠近的代码块