Я нашел эту проблему в коллекции вопросов интервью GitHub:
var foo = {n: 1}; var bar = foo; foo.x = foo = {n: 2};Вопрос: какое значение имеет foo.x?
Ответ - undefined.
Я провел некоторое исследование, и я понимаю, что эта проблема (поправьте меня, если я ошибаюсь):
var foo = {n: 1};объявляет объектfooсо свойствомn, равным 1.var bar = foo;объявляет объектbar, который ссылается на тот же объект, что иfoo.foo.x = foo = {n: 2};, который, я считаю, равенfoo.x = (foo = {n: 2});- И тогда я получил
foo.xравныйundefined. Однако значениемbar.xявляется объект{n:2}.
Если bar и foo ссылаются на один и тот же объект, почему bar.x получил значение, а foo.x - undefined? Что на самом деле происходит в foo.x = foo = {n: 2};?