@emissarman

Почему javascript так себя ведет?

var params = {
    result: 'default'
};
function getParams(what) {
    var par = params;
    if (what) {
        par.result = what;
    }
    return par;
}
var def = getParams();
var non_def = getParams('non-default');
console.log(def);
console.log(non_def);

в обоих случаях выведет "non-default". Почему? Если объект params поместить внутрь функции, то работает ожидаемым образом.
  • Вопрос задан
  • 184 просмотра
Решения вопроса 1
alsopub
@alsopub
params - объект, объекты при присвоении не копируются, копируется ссылка на объект.
Вы каждый раз изменяете одну и ту же область памяти, просто у вас на нее несколько ссылок: params, def, non_def.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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