在上面的代码中可以看出 arr[0]()和arr[1]()可以看成console.log(i); 那么代码就变成了
var arr=[]; for (var i=0;i<2;i++){ arr[i]=function(){ console.log(i); } } // arr[0](); // arr[1](); console.log(i); console.log(i);那我们看一下另外一个代码;
for (var i=0;i<2;i++){ } console.log(i);//2在上面这个代码中,i就在for循环里面有,但是系统会把他看成全局变量, 所以i就是2,上面的面试题的题目也是输出2.
这个题目是将上面的题目中的var 改成了 let let 的变量只在所处于的块级区域有用,每一次循环都会产生一个块级作用域,在输出的时候,会向上一级去寻找i,就可以找到自己循环的时候产生的块级作用域, 输出:0 1