Sobes.tech
Назад к вопросам
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`.