staffID
@staffID

Что с JavaScript?

Небольшой пример:
var a = {
 n: 1
},
b = a;

a.n = 2;
b.n // 2

Из-за чего так?
Я как то давно с помощью этой фичи получал значения функций асинхронно, но не заморачивался, сейчас же стало интересно.
  • Вопрос задан
  • 531 просмотр
Решения вопроса 4
alsopub
@alsopub
Один из важных моментов в изучении любого языка - разобраться какие типы данных передаются/присваиваются по значению, а какие по ссылке. Хотя бы бегло, но нужно пробежаться по какому-нибудь учебнику, чтобы меньше удивляться в будущем.
Ответ написан
Комментировать
dasha_programmist
@dasha_programmist
ex Software Engineer at Reddit TS/React/GraphQL/Go
b = a;
это копия адреса объекта "а", а не значение, для иного результата используй _.cloneDeep из lodash
Ответ написан
Комментировать
@lemme
Frontend
Ибо b хранит ссылку на объект a.
// ES2015
b = Object.assign({}, a); // новый объект
Ответ написан
@Maa-Kut
А в чем проблема?

var a = {
 n: 1
}

Вот мы создали новый объект, и ссылку на него положили в a

b = a;
А теперь создали еще одну ссылку на этот же объект и положили ее в b.

В итоге обе переменные ссылаются на одну и ту же сущность; соответственно, в данном случае a.n и b.n - это одно и то же значение.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы