Javascript数组[i]作为循环中的条件

Javascript数组[i]作为循环中的条件,javascript,arrays,loops,for-loop,while-loop,Javascript,Arrays,Loops,For Loop,While Loop,我正在努力了解myArr[I]的情况是如何工作的。由于某种原因,当i大于2时,它的计算结果为false,这恰好也是数组的长度。 显然,myArr[i]等于i

我正在努力了解myArr[I]的情况是如何工作的。由于某种原因,当i大于2时,它的计算结果为false,这恰好也是数组的长度。 显然,myArr[i]等于i
let myArr = [[1, 3], [5, 2], [2, 1]]

for (let i = 0; myArr[i]; i++){
    console.log(i)  //Result: 0, 1, 2
}

let i = 0
while (myArr[i]){
    console.log(i)  ////Result: 0, 1, 2
    i++
}

当索引到数组中时,只要尝试不存在的索引,就会得到一个未定义的结果。Undefined隐式转换为“false like”值。

No myArr[i]不是数组的长度

myArry[i]是对
i
的内存插槽中任何内容的引用,数组的每个部分都是内存中的指针


因此,当您说myArry[2]时,您要求计算机获取存储在数组插槽2内存中的值。当你说myArry[3]时,你的内存插槽中没有存储任何东西,因此它返回未定义的值。

Thx,快速回答!你完全正确,为什么我没有考虑这个。你的解释完全有道理,当我控制台记录布尔值(myArr[0])时,我得到“true”,但由于某种原因,当我控制台记录myArr[0]==true时,我得到false。这不应该是真的吗?技术上它不等于真的,它是一个数组。如果您想将对象/数组的存在转换为布尔值,这里有一个小技巧:!!myArr[0]另外,如果这回答了您的问题,您是否介意将其标记为一个答案,让人们知道我们不再寻找答案?当然,我将其标记为已解决!谢谢你的回答和小把戏,这正是我想要的。工作起来很有魅力!不,它不等于
i
。尝试迭代一个数组,如
[{},null,{}]
[true,false,true]