コンソールに「割り当ての左辺が無効です」というエラーが表示されます。ここに構文がありませんか?
if ($images[next] && images[next].loaded = false){
//stuff
}
各条件はそれ自体で通過しますが、組み合わせると失敗します。
コンソールに「割り当ての左辺が無効です」というエラーが表示されます。ここに構文がありませんか?
if ($images[next] && images[next].loaded = false){
//stuff
}
各条件はそれ自体で通過しますが、組み合わせると失敗します。
誰もがすでに言ったように、比較のために==
(または) を使用する必要があります。===
エラーの原因は、他の比較演算子とは異なり、代入演算子の優先順位がブール演算子よりも=
低いことです。したがって、式は次のように評価されました。&&
==
($images[next] && images[next].loaded) = false
括弧内の左側の部分は、 または のいずれtrue
かになりますfalse
。だからそれはどちらかになります
true = false
また
false = false
ブール値には何も割り当てることができないため (変数またはオブジェクト プロパティにのみ)、どちらも許可されません。したがって、無効な左側の代入エラーがスローされます。
適切な比較演算子を使用すると、優先順位規則により、次のように評価されます。
$images[next] && (images[next].loaded == false)
それはtrue && true
, or true && false
, or false && false
, orfalse && true
になり、最終的にはtrue
orfalse
になります。これは、if ステートメントが期待するものです。
比較には double equals を使用します。または、次のように書くこともできます。
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
}
単一の=
手段を使用すると、変数に値を割り当てます。比較には、厳密な等価性のために==
orを使用します。===
たぶん、同等性チェックの「=」の代わりに「==」が役立つでしょう
if ($images[next] && images[next].loaded == false)
{
//stuff
}
javascript比較演算子のリストについては、こちらをご覧ください
誰もが同じことを言うでしょう:... .loaded = false
あるべきです... .loaded == false
。=
代入演算子、==
比較演算子です。
if (x = someFunction())
someFunction() が false を返さないか、エラーをスローしない限り、どちらがコードブロックを実行するかがわかる場合があります(あなたの場合のように)。
ご不明な点がございましたら、お気軽にお問い合わせください:)
https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Expressions_and_Operators