一、let and const
let和const为JavaScript引入了词法作用域,它们声明的变量不会提升,而且只可以在声明这些变量的代码块中使用。造成的弊端,就是不能在声明之前使用,同时出现临时死区的定义。
二、用法
let and const的行为与var基本上相同,不同的是,它们在循环中的表现。在for-in 和for-of 循环中,let和const都会每次迭代时创建新绑定从而使循环体内创建的函数可以访问到相应迭代的值,而非最后一次迭代后的值(像使用var那样)。注意,let在for循环中的表现一样,但是在for循环中使用const可能会导致错误。
例子:
var funcs = [],
object = {
a:true,
b:true,
c:true
};
for(let key in object){
funcs.push(function(){
console.log(key);
})
}
funcs.forEach(function(func){
func(); //输出a、b、c
});
三、最佳实践
当前使用块级绑定的最佳实践:默认使用const,只在确实需要改变变量的值时使用let。