在 ES6 中 let 可以替换 var 对变量进行声明,其有点是声明只在块内有效,而不会随全局而改变。
这个方法特别适用于 for 循环,举例而言:
for(var i=0;i<5;i++){
img.onerror=function(){console.log(i);}
}
如果用 var 声明了循环次 i ,那么报错输出的结果可能都是 5。
原因是 onerror 是异步操作,在检测出图片出错的同时,循环可能已经向前执行。
等到出现报错时读取的是当前循环中的 i ,那么这个 i 可能就已经是后面的循环次了。
如果改用 let 声明循环次 i ,那么每个 i 和当前循环都是绑定的,再报错会显示当时的循环次数。
这个 let 相比 var 更加符合思考逻辑,也和 PHP 语法中的 $ 更加类似,非常好用。