几天前,在我唯一的作者网站上,我将此代码添加到脚本中:
if (PowerArray[0][0].length < 1);
{
return false;
}
一切正常。当PowerArray [0] [0]为“70”时,脚本运行。当PowerArray为空时,脚本没有超过上面引用的行。 这不再是真的。对于我的生活,我无法弄清楚。我测试了代码的变体,如下所示:
if (PowerArray[0][0].length < 1);
{
alert(PowerArray[0][0].length);
return false;
}
并设置PowerArray [0] [0] =“70”。当我运行代码时,我在文本中收到一条带“2”的警报。这是我在脚本中唯一有警报的地方。这里发生了什么,我该如何解决?
注意:当然,预期的行为是没有警报,因为“70”的长度为2,并且不应该触发if的真实性。
编辑:1)是的,第一个区块中的False
是拼写错误。它已得到纠正。 2)如果(并且仅当)PowerArray [0] [0] .length为0时,预期的行为是停止处理.3)我之前将PowerArray初始化为空数组,然后复制了一个数组(具有它可能是空的。
答案 0 :(得分:4)
你应该从if语句中删除分号,它会在那里终止你的语句。 是的,当你的PowerArray是空的时候, PowerArray [0] [0]将抛出一个未定义的错误, 所以也应该对它进行空检查。
答案 1 :(得分:3)
当PowerArray
为空PowerArray[0]
未定义时,您会收到PowerArray[0][0]
说TypeError: Cannot read property '0' of undefined
的错误,这就是为什么脚本在该行之后也没有运行
if (PowerArray && PowerArray[0] && PowerArray[0][0] && PowerArray[0][0].length < 1)
{
return false;
}
答案 2 :(得分:0)
试试这个
if (PowerArray[0]) {
if (PowerArray[0][0].length < 1) {
return False;
}
}
答案 3 :(得分:0)
我认为if之后的分号是问题。 我还会检查PowerArray是否是有效的2D阵列实现。 点击此链接了解提示How can I create a two dimensional array in JavaScript?
首先将其更改为此if (PowerArray[0][0].length < 1)