代入演算子が右結合であることは理解しています。
たとえば x = y = z = 2、(x = (y = (z = 2)))
ということで、以下のことを試してみました。
foo.x = foo = {a:1}
オブジェクトfooが値で作成され{a:1}、次にプロパティxが作成されfoo、オブジェクトへの参照になると予想していましたfoo。
(これは、複数の代入ステートメントを 2 つの別個のステートメントに分割した場合に実際に起こることですfoo = {a:1};foo.x = foo;)
実際の結果は次のとおりです。
ReferenceError: foo が定義されていません(…)
それで、私は次のことを試しました:
var foo = {};
foo.x = foo = {a:1};
これで例外は発生しなくなりましたが、foo.x未定義です!
割り当てが期待どおりに機能しないのはなぜですか?
免責事項:「重複」の質問は、私が求めているものとは大きく異なるようです。問題は、割り当てで作成された変数がグローバルであり、
varキーワードで作成された変数に並置されているためです。それはここでは問題ではありません。