0

インデックスをデクリメントせずに (変数の値を変更せずに) 1 (または任意の数値) を減算するにはどうすればよいですか?

これが私のコードのスニペットです:

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

そして、Firebug から次のエラー メッセージが表示されます。

TypeError: areaImages[i - 1] is undefined
4

1 に答える 1

8

何も減りません。実際の理由は、間違った演算子を使用したことです。

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

ブール値の場合、&との両方&&が同じ (最大==) の結果を返します。しかし、決定的な違いは、&&ショートサーキットであることです。つまり、 の左側が の場合&&false右側は評価されません。

元のコードの問題点はショートサーキットで&ないareaImages[i-1].idので、 であっても評価されi <= 0ます。しかしi-1、無効なインデックスであるためareaImages[i-1]未定義であり、未定義からプロパティを取得できず、TypeError が発生します。

于 2012-11-08T20:34:55.140 に答える