javascript变量警报,但使用时未定义

javascript变量警报,但使用时未定义,javascript,Javascript,这很奇怪。看看这个: for( var i = 0; i <= videos.length; i ++ ){ alert(videos[i].id); // this works and alerts the correct number var foo = videos[i].id; // firebug says "videos[i] is undefined" } for(var i=0;i摆脱for循环条件中的= for( var i = 0; i &l

这很奇怪。看看这个:

 for( var i = 0; i <= videos.length; i ++ ){

    alert(videos[i].id); // this works and alerts the correct number

    var foo = videos[i].id; // firebug says "videos[i] is undefined"

 }

for(var i=0;i摆脱
for
循环条件中的
=

for( var i = 0; i < videos.length; i ++ ){
    ...
}
for(var i=0;i

使用
摆脱
for
循环条件中的
=

for( var i = 0; i < videos.length; i ++ ){
    ...
}
for(var i=0;i

使用
因为您正在执行
i因为您正在执行
i更改“更改”因为您的长度比可用数组长度长一个。数组索引以
0
开始,并且通过在循环测试中包含
=
,您的元素太长了。它只需要小于长度,而不等于。@freshyeball:您忘了说“请”
3
元素。索引:
0
1
2
@freshyeball查看我的解释答案。一个大于
数组大小的元素可能会让我困惑。你是对的,我知道你的意思,但可以说
I
将是
3
,数组大小是
3
…但也许我现在太挑剔了…该睡觉了;)晚安!(对世界的另一边说再见:)@alex-我会对此提出质疑,因为OP实际上并不是在迭代大于
数组
长度的索引。实际上,OP实际上是迭代到长度,这就是问题所在,因为原始索引是
0
,而不是
1
。我知道你的意思,但你的解释让外行感到困惑。因为你的长度比可用的数组长度长一个。数组索引从
0
开始,通过在循环测试中包含
=
,您将超出一个元素的范围。它只需要小于长度,而不是等于。@freshyeball:你忘了说“请”<代码>3个
元素。索引:
0
1
2
@freshyeball请看我的解释答案。在我看来,一个大于
数组的大小可能会让人困惑。你是对的,我知道你的意思,但可以说
I
将是
3
,数组的大小是
3
。。。但也许我现在太挑剔了。。。应该睡觉;)晚安(对世界的另一边说再见:)@alex-我会对此提出质疑,因为OP实际上并不是在迭代大于
数组
长度的索引。实际上,OP实际上是迭代到长度,这就是问题所在,因为原始索引是
0
,而不是
1
。我知道你的意思,但你的解释让外行感到困惑。