问题在复习ES6的块级作用域时候又遇到了for循环的经典问题,即vara=[];for(vari=0;i<10;i++){a[i]=function(){console.log(i);}}console.log(a[6]())//10如何使得输出依次为1到9,使用ES6,一般这样做:vara=[];for(leti=0;i<10;i++){a[i]=function(){console.log(i);}}console.log(a[6]())//6我的误解我认为上述答案也可以写成:vara=[];leti;for(i=0;i<10;i++){a[i]=function(){console.log(i);}}console.log(a[6]())//10输出:10?和想象中不一样啊?为什么不是6?我的理由块级作用域是以{}标识的,for循环应该生成十个{}子块作用域每个子块{}中关联的是相应的i,即每次循环的i值let放在for语句内和for语句外部应该都在十个{}子块的外部吗?请问我的错误出在哪里?
扬帆大鱼
相关分类