为什么将0作为数组的第一个元素阻止"对于"循环执行。 [JavaScript的]

时间:2016-02-22 07:01:52

标签: javascript arrays

考虑以下JavaScript代码:

var words = delIdx = [0, 1, 2, 3];
for(let i=0; delIdx[i]; i++) {
  console.log('DELIDX: ', delIdx[i]);
}

for(let i=0; words[i]; i++) {
  console.log('Word: ', words[i]);
}

wordsdelIdx是数组,您可以看到数组的第一个元素设置为0(零),下面两个FOR循环使用这些数组来控制执行的循环。但是当0是循环的第一个元素时,它不起作用。它根本不会进入任何循环。

如果我将数组的值更改为var words = delIdx = [2, 3, 4, 5],那么循环就可以正常工作。

有没有人遇到过这个问题?为什么会这样?这是JavaScript中的错误吗?

我在Node.js v5.3.0和FireFox 44.0.2控制台中遇到过这种情况。

有什么想法吗?

感谢。

2 个答案:

答案 0 :(得分:3)

当你在javascript中使用for循环时,中间部分应该是谓词:

  • 如果评估为true,则循环继续
  • 如果评估为false,则循环停止

这里传递的是0,其评估为false,因此不会发生循环。

答案 1 :(得分:0)

因为当它评估为0时,它将返回false,这就是循环不起作用的原因 但是当你删除0表单数组时,它将返回true并且循环正常工作 您也可以使用此代码遍历您的数组

__proto__