var,循环在javascript中,无法理解输出,错误

jwk*_*koo 1 javascript loops for-loop

    var arr = [];
    for(var i=0; i<5; i++){
        arr[i] = function(){
            return i;
        };
    }
    document.write(arr[1]());
Run Code Online (Sandbox Code Playgroud)

输出是5,正如我预期的那样

但是当我在返回i之间添加i ++时; 和for循环的结束,如下面的代码,

    var arr = [];
    for(var i=0; i<5; i++){
        arr[i] = function(){
            return i;
        };
        i++;
    }
    document.write(arr[1]());
Run Code Online (Sandbox Code Playgroud)

屏幕显示错误,Uncaught TypeError:arr [1]不是函数

我预计输出应该是6,但我不明白为什么.

Poi*_*nty 6

因为你必须有2个递增i,数组的元素分配将是0,24.元素1被跳过.

第一个赋值在i0 时发生.然后,i在循环结束时递增为1,然后在for循环头的第三个子句中再次递增到2 .所以下一个任务是针对元素2.