Таким образом, я играл на днях, чтобы посмотреть, как работает массовое задание в JavaScript.
Сначала я попробовал этот пример в консоли:
a = b = {};
a.foo = 'bar';
console.log(b.foo);
Результатом стал "бар", отображаемый в предупреждении. Это справедливо, a
и b
- это просто псевдонимы одного и того же объекта. Тогда я подумал: как я могу сделать этот пример более простым.
a = b = 'foo';
a = 'bar';
console.log(b);
Это почти то же самое, не так ли? На этот раз он возвращает foo
не bar
как я ожидал бы от поведения первого примера.
Почему это происходит?
NB Этот пример может быть упрощен еще более с помощью следующего кода:
a = {};
b = a;
a.foo = 'bar';
console.log(b.foo);
a = 'foo';
b = a;
a = 'bar';
console.log(b);