Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中的var循环无法理解输出,错误 var arr=[]; 对于(var i=0;i_Javascript_Loops_For Loop - Fatal编程技术网

javascript中的var循环无法理解输出,错误 var arr=[]; 对于(var i=0;i

javascript中的var循环无法理解输出,错误 var arr=[]; 对于(var i=0;i,javascript,loops,for-loop,Javascript,Loops,For Loop,,因为i有两个增量,数组的指定元素将是0,2,和4。元素1 第一个赋值发生在i为0时。然后,i在循环结束时递增为1,然后在循环头的第三个子句中再次递增为2。因此下一个赋值是针对元素2。因为i有两个增量,数组的赋值元素将是>0、2和4。跳过元素1 第一个赋值发生在i为0时。然后,i在循环结束时增加到1,然后在循环头的第三子句中再次增加到2。因此下一个赋值是元素2。因为在第一个循环之后i将是2。我建议使用一些调试工具查看变量或向代码中添加一些console.log(),以了解下次发生的情况。因为您将

,因为
i
有两个增量,数组的指定元素将是
0
2
,和
4
。元素
1

第一个赋值发生在
i
为0时。然后,
i
在循环结束时递增为1,然后在
循环头的
第三个子句中再次递增为2。因此下一个赋值是针对元素2。

因为
i
有两个增量,数组的赋值元素将是
>0
2
4
。跳过元素
1


第一个赋值发生在
i
为0时。然后,
i
在循环结束时增加到1,然后在
循环头的
第三子句中再次增加到2。因此下一个赋值是元素2。

因为在第一个循环之后
i
将是
2
。我建议使用一些调试工具查看变量或向代码中添加一些
console.log()
,以了解下次发生的情况。因为您将索引增加2,数组[0],数组[2],数组[4]…您是否也希望
arr
中的所有函数都输出相同的值?这就是将要发生的情况。因为在第一次循环之后,
i
将是
2
。我建议使用一些调试工具查看变量或添加一些
console.log()
,让您的代码了解下一次发生了什么。因为您要将索引增加2,数组[0],数组[2],数组[4]…您是否也希望
arr
中的所有函数都输出相同的值?这就是将要发生的事情。我可以在11分钟后接受您的回答,无论如何,谢谢您,没有闭包,
arr
中的所有函数都不会输出
5
@evolutionxbox是的,但OP显然已经知道了这一点;是的问题中提到了。说得好!我错过了最后一行,只是输出不是
6
而是
5
。我可以在11分钟后接受你的回答,无论如何,谢谢你。另外,没有闭包,
arr
中的所有函数都不会输出
5
@evolutionxbox是的,但显然OP已经知道了问题中提到了。说得好!我错过了最后一行,只是输出不是
6
,而是
5
    var arr = [];
    for(var i=0; i<5; i++){
        arr[i] = function(){
            return i;
        };
    }
    document.write(arr[1]());
    var arr = [];
    for(var i=0; i<5; i++){
        arr[i] = function(){
            return i;
        };
        i++;
    }
    document.write(arr[1]());