Уловка кода Javascript: в чем ценность foo.x
Я встретил эту проблему в сборнике вопросов 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};
?