2013-07-16 49 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完全錯過了它 –