0

コンソールに「割り当ての左辺が無効です」というエラーが表示されます。ここに構文がありませんか?

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

各条件はそれ自体で通過しますが、組み合わせると失敗します。

4

6 に答える 6

1

誰もがすでに言ったように、比較のために==(または) を使用する必要があります。===エラーの原因は、他の比較演算子とは異なり、代入演算子の優先順位がブール演算子よりも=低いことです。したがって、式は次のように評価されました。&&==

($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になり、最終的にはtrueorfalseになります。これは、if ステートメントが期待するものです。

于 2013-03-10T03:58:55.623 に答える
1

比較には double equals を使用します。または、次のように書くこともできます。

var item = $images[next];
if (item && !item.loaded){
}
于 2013-03-10T03:05:04.260 に答える
1

そのはず

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

オア・ベター

var images = $images[next];
if (images  && images .loaded === false){
    //stuff
}
于 2013-03-10T03:05:20.513 に答える
1

単一の=手段を使用すると、変数に値を割り当てます。比較には、厳密な等価性のために==orを使用します。===

于 2013-03-10T03:07:20.003 に答える
0

たぶん、同等性チェックの「=」の代わりに「==」が役立つでしょう

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

javascript比較演算子のリストについては、こちらをご覧ください

于 2013-03-10T03:12:39.793 に答える
0

誰もが同じことを言うでしょう:... .loaded = falseあるべきです... .loaded == false=代入演算子、==比較演算子です。

if (x = someFunction())someFunction() が false を返さないか、エラーをスローしない限り、どちらがコードブロックを実行するかがわかる場合があります(あなたの場合のように)。

ご不明な点がございましたら、お気軽にお問い合わせください:)

https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Expressions_and_Operators

于 2013-03-10T03:16:11.040 に答える