2013-07-16 129 views
0

前几天,在我上我唯一作者一个网站,我加入这个代码的脚本:我的逻辑有什么问题? (JS字符串长度)

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

+11

你有一些分号在结束你的'if'这可能会导致问题的语句。 –

+2

我没有检查,但我相当肯定'假'不应该工作。错字? –

+0

你检查了你的错误控制台吗? – tjameson

回答

4

你应该从if语句中删除分号,它会在那里终止您的语句。 是的,当你的PowerArray为空时, PowerArray [0] [0]会抛出一个未定义的错误, 所以应该对它进行空检查。

+0

这是一个逻辑错误,但不是当PowerArray为空时后面的脚本不能运行的原因 –

+0

@ArunPJohny但这就是提问者在他的阵列中观察70的原因。然而,提高你的答案,因为这是OP将遇到的下一个问题。 –

0

试试这个

if (PowerArray[0]) { 
      if (PowerArray[0][0].length < 1) { 
       return False; 
      } 
     } 
+0

除了你没有修复的额外分号...如果该值是虚假的,它的长度(如果有的话)将为零。 –

+0

针尖指针 – iJade

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; 
} 
+0

仍然有语法错误,因为'False'不是有效的Javascript关键字。除非我错过了一些东西......并且你错过了后面的分号...... – tjameson

+0

@tjameson完全错过了它 –