2013-03-10 26 views
0

在控制檯中獲取'賦值中無效的左側'錯誤。我在這裏缺少語法嗎?javascript如果條件:對象存在並且附加了值

if ($images[next] && images[next].loaded = false){ 
    //stuff 
} 

每個條件通過它自己,但合併時失敗。

+0

'mages [next] .loaded == false' – 2013-03-10 03:04:56

+0

@ArunPJohny:如果'images [next]''undefined'不起作用。 – Blender 2013-03-10 03:16:44

回答

1

使用單一=意味着你賦值給一個變量。爲進行比較,請使用=====進行嚴格平等。

1

使用雙等於比較。或者,你可以只寫:

var item = $images[next]; 
if (item && !item.loaded){ 
} 
1

應該

if ($images[next] && $images[next].loaded == false){ 
    //stuff 
} 

或更好

var images = $images[next]; 
if (images && images .loaded === false){ 
    //stuff 
} 
0

也許的 「==」,而不是在平等檢查一個 「=」 將有助於

if ($images[next] && images[next].loaded == false) 
{ 
    //stuff 
} 

對於JavaScript的比較運算符的列表,看看here

1

大家都已經告訴你了,你應該用==(或===)進行比較。造成錯誤的原因是,與==或任何其他比較運算符不同,賦值運算符=的運算符比布爾運算符precedence低。所以,你的表達被評價爲:

($images[next] && images[next].loaded) = false 

的左側部分,在括號一樣,將會是truefalse。這樣就顯得既

true = false 

false = false 

無論是允許的,因爲你不能分配給任何一個布爾值(只給一個變量或對象屬性)。因此分配錯誤的左側無效。

當您使用適當的比較操作中,優先級規則導致它這樣的評價:

$images[next] && (images[next].loaded == false) 

變成true && true,或true && false,或false && false,或false && true,則最終只truefalse,這是if語句所期望的。

相關問題