本文介绍了深入理解ES6中let和闭包,分享给大家,具体如下:
在开始本文之前我们先来看一段代码
for(var i=0;i<10;i++){
arr[i]=function(){
return i;
}
}
console.log(arr[3]());//10
显然这段代码输出10,并没有向我们期望的返回3,原因也很简单(js的变量提升)函数在调用时候访问的是一个全局作用域的i,此时for循环已经执行完毕,全局变量i=10;
在ES5标准中,我们要想返回期望的3,通常的做法也很简单,就是让数组中的每个函数有单独的作用域,那么我们只要构造一个立即执行函数即可(js中没有块级作