Начинаю изучать JS. Вопрос по теме взаимодействия локальных и глобальных параметров объекта

function func(arg) {
    return arg = '!';
}

let obj = {a: 1, b: 2, c: 3};
console.log(func(obj.a));
console.log(obj);

Меня интересует, почему в первом случае возвращает восклицательный знак вместо всего объекта, если я передавал только значение параметра объекта "а", при вызове функции.


Ответы (2 шт):

Автор решения: Andrey

Потому что необходимо в функции просто возвратить аргумент

function func(arg) {
    return arg;
}
→ Ссылка
Автор решения: Grundy

Аргументы функций нужно рассматривать как обычные переменные.

Тогда твой код будет равносилен:

arg = obj.a;
arg = '!';

Очевидно, что в данном случае было бы странно ожидать изменение внутри obj.

→ Ссылка