私はいくつかのコードを読んでいて、次のようにレイアウトされた比較が表示されます。
a = b = c
同等または比較についてJavascriptを検索すると、どのように改善結果が得られるかを見て、誰もが何が起こっているのかを説明したいと思っていますか?
編集:これらはすべて、ここで説明しているオブジェクトまたはオブジェクトプロパティであり、指定する必要があります。
二重編集:これはObject.defineProperties()ブロック内にあります。
私はいくつかのコードを読んでいて、次のようにレイアウトされた比較が表示されます。
a = b = c
同等または比較についてJavascriptを検索すると、どのように改善結果が得られるかを見て、誰もが何が起こっているのかを説明したいと思っていますか?
編集:これらはすべて、ここで説明しているオブジェクトまたはオブジェクトプロパティであり、指定する必要があります。
二重編集:これはObject.defineProperties()ブロック内にあります。
=
は演算子です。変数参照と式の2つの引数を取ります。式の値を変数に割り当て、割り当てられた値を返します。
結果として、それらを連鎖させることができ、それはこれに相当します:
a = (b = c)
つまり、b
の値に割り当ててから、c
その値もに割り当てますa
。
a = b = c
は次の略記です。
b = c;
a = b;
if(a = b)
true
比較するのではなく、割り当てているため、常に戻ります。比較するには、ステートメントは次のようになりますif(a == b)
。
それは比較ではありません。これは、と変数c
へのの値の割り当てです。b
a
割り当ては右から左に機能するため、最初に割り当てc
られb
ます。次に、その操作の戻り値がに割り当てられa
ます。
代入演算の戻り値は代入された値であるため、に割り当てられa
たのと同じ値を取得しb
ます。
=
演算子は右から左に関連付け、割り当てられた値に評価します。
したがって、この:
a = b = c;
これを意味します*:
b = c;
a = c;
*プロパティを扱っている場合を除きます。
これはこれと同じです。
b = c; a = b;