我的逻辑出了什么问题? (JS字符串长度)

时间:2013-07-16 04:42:13

标签: javascript

几天前,在我唯一的作者网站上,我将此代码添加到脚本中:

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初始化为空数组,然后复制了一个数组(具有它可能是空的。

4 个答案:

答案 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)