Я понимаю, что оператор присваивания является правильным ассоциативным.
Итак, например, x = y = z = 2
эквивалентно (x = (y = (z = 2)))
В этом случае я попробовал следующее:
foo.x = foo = {a:1}
Я ожидал, что объект foo
будет создан со значением {a:1}
, а затем свойство x
будет создано на foo
, которое будет просто ссылкой на объект foo
.
(На самом деле это происходит, если я должен был отделить оператор множественного присваивания от двух отдельных операторов foo = {a:1};foo.x = foo;
)
Результат был фактически:
ReferenceError: foo не определен (...)
Итак, я попробовал следующее:
var foo = {};
foo.x = foo = {a:1};
Теперь я больше не получаю исключение, но foo.x
есть undefined!
Почему назначение не работает так, как я ожидал?
Отказ от ответственности. Вопрос "дубликат" кажется очень отличным от того, который я задаю, поскольку проблема заключается в том, что переменные, которые были созданы в присваивании, были глобальными, поскольку они были связаны с созданными переменными с ключевым словом
var
. Это не проблема.