Тож я грав ще днями, щоб точно побачити, як працює масове призначення в JavaScript.
Спочатку я спробував цей приклад у консолі:
a = b = {};
a.foo = 'bar';
console.log(b.foo);
Результатом було відображення "смужки" у попередженні. Це досить справедливо aі bнасправді є лише псевдонімами одного і того ж об’єкта. Тоді я подумав, як я можу зробити цей приклад простішим.
a = b = 'foo';
a = 'bar';
console.log(b);
Це майже те саме, чи не так? Ну, цього разу він повертається fooне так, barяк я б очікував від поведінки першого прикладу.
Чому це відбувається?
Примітка Цей приклад можна ще більше спростити за допомогою наступного коду:
a = {};
b = a;
a.foo = 'bar';
console.log(b.foo);
a = 'foo';
b = a;
a = 'bar';
console.log(b);
(Я підозрюю, що JavaScript по-різному ставиться до примітивів, таких як рядки та цілі числа, до хешів. Хеші повертають вказівник, тоді як "core" примітиви повертають копію себе)