Назад к вопросам
Intern
3
/ * Даны три секции кода. Необходимо написать результат выполнения каждого console.log. * / var n = 1; function f(n) { n = 3; } f(n); console.log(n); // ?? // ---------------- var obj = { a: 1 }; function f1(o) { o.a = 5; } f1(obj); console.log(obj); // ?? // ---------------- var obj = { a: 1 }; function f2(o) { o = { hello: 1 }; } f2(obj);
Компании, где спрашивали
Яндекс
Ответ от нейросети
sobes.tech AI
javascript var n = 1;
function f(n) { n = 3; // локальная переменная n внутри функции } f(n);
console.log(n); // 1
// ----------------
var obj = { a: 1 };
function f1(o) { o.a = 5; // изменяем свойство объекта, на который ссылается o } f1(obj);
console.log(obj); // { a: 5 }
// ----------------
var obj = { a: 1 };
function f2(o) { o = { hello: 1 }; // переопределяем локальную переменную o, не меняя внешний объект }
f2(obj);
console.log(obj); // { a: 1 }
Объяснение:
- В первом случае примитив `n` передаётся по значению, изменение внутри функции не влияет на внешнюю переменную.
- Во втором случае объект передаётся по ссылке, и изменение свойства внутри функции отражается на исходном объекте.
- В третьем случае переменная `o` внутри функции переназначается на новый объект, но это не меняет внешний объект, на который изначально ссылалась переменная `obj`.