Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.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/8/logging/2.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
For循环迭代<;vs<;=JavaScript基础_Javascript - Fatal编程技术网

For循环迭代<;vs<;=JavaScript基础

For循环迭代<;vs<;=JavaScript基础,javascript,Javascript,我很难弄清楚为什么这段代码会给我 TypeError:无法读取未定义的属性“0” 函数从列表到对象(数组){ //创建新的空对象以在中存储key:value var obj={}; //在给定数组上循环 对于(var i=0;i如果您有一个包含10个元素的数组,并且您开始使用1进行计数-最后一个元素将放置在10位置 但是-如果以0开始计数(这是数组的工作方式),最后一个位置将是length-1(在本例中为9) 在您的示例中-for循环以0开始,应计数到数组中的最后一个元素,该元素位于长度-1位

我很难弄清楚为什么这段代码会给我

TypeError:无法读取未定义的属性“0”

函数从列表到对象(数组){
//创建新的空对象以在中存储key:value
var obj={};
//在给定数组上循环

对于(var i=0;i如果您有一个包含10个元素的数组,并且您开始使用
1
进行计数-最后一个元素将放置在
10
位置

但是-如果以
0
开始计数(这是数组的工作方式),最后一个位置将是
length-1
(在本例中为9)

在您的示例中-for
循环以
0
开始,应计数到数组中的最后一个元素,该元素位于
长度-1
位置。

如果您有一个包含10个元素的数组,并且使用
1
开始计数,则该位置也是
——最后一个元素将放置在
第10个
位置

但是-如果以
0
开始计数(这是数组的工作方式),最后一个位置将是
length-1
(在本例中为9)

在您的示例中-for
循环以
0
开始,应计数到数组中的最后一个元素,该元素位于
长度-1
位置。

这个位置也是
它在那里@4castlearray从0开始,所以array.length是1,超过了最后一项。
它实际上并不影响问题或结果,具体来说,但是代码中有一个微妙的错误;您将一个参数作为
array
传递到函数中,然后引用外部变量
arrfromListToObject(arr2)
,例如)你不会得到你期望的结果。它在那里@4castleArrays从0开始,所以array.length比最后一项多1。
它实际上并不影响问题或结果,特别是,但是你的代码中有一个微妙的错误;你将一个参数作为
数组
传递到函数中,但随后引用了外部变量函数内部的ble
arr
。如果您再次调用该函数(
fromListToObject(arr2)
,例如),您将不会得到预期的结果。您的第一个替代示例(
for(var i=1;i@clais)是这样做的。我没有写任何关于该循环中
i
用法的内容。如果您使用
arr[i-1]
它工作得很好……好的,你也可以这样做,但我想你可能想把它说得更清楚一点,因为它的变化不仅仅是那一行,乍一看可能会让人困惑。你是对的,我将它添加到答案中:)谢谢!你的第一个备选示例(
)(var i=1;i@clais确实如此。我没有写任何关于循环中
i
用法的东西。如果使用
arr[i-1]
它工作得很好……好的,你也可以这样做,但我想你可能想把它说得更清楚一点,因为它的变化不仅仅是那一行,乍一看可能会让人困惑。你是对的,我会把它添加到答案中:)谢谢!
for (var i = 0; i < arr.length; i++) {
    ...
}
for (var i = 1; i <= arr.length; i++) {
    // Note that here you would want to access the elements
    // in the array using arr[i-1]
    ...
}
arr.forEach(function(element) {
    ...
});