Я понимаю, что оператор присваивания является правильным ассоциативным.
Итак, например, 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. Это не проблема.