在控制檯中獲取'賦值中無效的左側'錯誤。我在這裏缺少語法嗎?javascript如果條件:對象存在並且附加了值
if ($images[next] && images[next].loaded = false){
//stuff
}
每個條件通過它自己,但合併時失敗。
在控制檯中獲取'賦值中無效的左側'錯誤。我在這裏缺少語法嗎?javascript如果條件:對象存在並且附加了值
if ($images[next] && images[next].loaded = false){
//stuff
}
每個條件通過它自己,但合併時失敗。
使用單一=
意味着你賦值給一個變量。爲進行比較,請使用==
或===
進行嚴格平等。
使用雙等於比較。或者,你可以只寫:
var item = $images[next];
if (item && !item.loaded){
}
應該
if ($images[next] && $images[next].loaded == false){
//stuff
}
或更好
var images = $images[next];
if (images && images .loaded === false){
//stuff
}
也許的 「==」,而不是在平等檢查一個 「=」 將有助於
if ($images[next] && images[next].loaded == false)
{
//stuff
}
對於JavaScript的比較運算符的列表,看看here
Everyone'll prly說同樣的事情:... .loaded = false
應該是... .loaded == false
。 =
是賦值運算符,==
是比較運營商..
有時你會看到if (x = someFunction())
只要someFunction()函數沒有返回FALSE或拋出一個錯誤(因爲它在做這將運行代碼塊你案件)。
讓我知道如果您有任何疑問:)
https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Expressions_and_Operators
大家都已經告訴你了,你應該用==
(或===
)進行比較。造成錯誤的原因是,與==
或任何其他比較運算符不同,賦值運算符=
的運算符比布爾運算符precedence低。所以,你的表達被評價爲:
($images[next] && images[next].loaded) = false
的左側部分,在括號一樣,將會是true
或false
。這樣就顯得既
true = false
或
false = false
無論是允許的,因爲你不能分配給任何一個布爾值(只給一個變量或對象屬性)。因此分配錯誤的左側無效。
當您使用適當的比較操作中,優先級規則導致它這樣的評價:
$images[next] && (images[next].loaded == false)
變成true && true
,或true && false
,或false && false
,或false && true
,則最終只true
或false
,這是if語句所期望的。
'mages [next] .loaded == false' – 2013-03-10 03:04:56
@ArunPJohny:如果'images [next]''undefined'不起作用。 – Blender 2013-03-10 03:16:44