这个变量i,有点不太懂

for(leti=0;i<5;i++){
a[i]=function(){
console.log(i)
}
}
a[2]()//2
i为什么不是undefined,for循环里面我只是创建了一个函数,为什么我执行a[2]的时候还是能拿到i的值
繁星淼淼
浏览 443回答 2
2回答

慕森卡

因为let具有块级作用域的特性,因此i只会在当前循环有效。实际上你的循环创建了5个块级作用域,每一个i值都只在当前的块级作用域中有效果。你的代码等同于如下:"usestrict";var_loop=function_loop(i){a[i]=function(){console.log(i);};};for(vari=0;i

肥皂起泡泡

你这不是创建了5个函数吗?a[0]=function(){console.log(0);}a[1]=function(){console.log(1);}a[2]=function(){console.log(2);}.....
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript