2012-11-08 47 views
0

如何從索引中減去1(或任何數字)而不減少它(變量中沒有值的變化)?如何從JavaScript中的前一個索引號中減去1

這裏是我的代碼片段:

if (i > 0 & areaImages[i].id == areaImages[i-1].id) 

我從螢火蟲收到此錯誤信息:

TypeError: areaImages[i - 1] is undefined 
+1

考慮使用http://jshint.com來警告你這種常見的錯誤。 –

回答

8

沒有遞減。實際的原因是你使用了錯誤的操作符。

if (i > 0 && areaImages[i].id == areaImages[i-1].id) 
//  ^^ 

對於布爾值,既&&&將返回相同的(高達==)的結果。但是關鍵的區別是&&short-circuiting,即當&&的左側是false時,則右側將不被評估。

原代碼的問題是,&短路,所以areaImages[i-1].id將被評估,即使i <= 0。但是i-1是無效索引,因此areaImages[i-1]未定義,並且您無法從undefined獲取屬性,從而導致TypeError。

+0

好吧所以'&&'在'&&'的左手邊爲假時短路。這是有用的信息。但是,如何讓'areaimages [i-1]'成爲一個有效的索引?我只想使用以前的索引而不減少'var i' – Chakotay

+0

繼續我從上面的^的位置繼續。 'areaImages [-1]'是訪問前一個索引的不正確方式,還是我得到一個未定義的錯誤信息,因爲該索引在該程序中的那一刻未定義? – Chakotay

+0

@Alexander:你認爲'areaImages [-1]'是什麼? – kennytm

相關問題