Zmiana wartości zmiennej podanej jako argument w funkcji

0

Czy da się zrobić funkcję działającą w ten sposób w JS, że zmienia wartości zwykłej zmiennej podanej jako argument?
Po wykonaniu poniższego kodu temp nie zmienia wartości.

let temp = 1;
function change(arg){
  arg = 2;
}
change(temp);
console.log(temp);

Wiem, że z obiektem nie ma problemu ze zmianą wartości.
Po wykonaniu poniższego kodu w w temp2 zmienia wartość.

let temp2 = {w : 1};
function change2(arg){
  arg.w = 2;
}
change2(temp2);
console.log(temp2);
2

Po wykonaniu poniższego kodu temp nie zmienia wartości.

Zmienia wartość, tylko zmiennej arg, która jest zmienną lokalną funkcji. W JS to tak działa (w niektórych innych językach programowania można osiągnąć to, co chcesz, używając jakiegoś wskaźnika czy referencji, ale nie w JS).

Możesz natomiast zrobić tak jak w tym drugim fragmencie kodu z twojego posta. Pytanie tylko, czy to dobry design, ale to już zależy, co chcesz zrobić. Ciężko ocenić po fragmencie wyrwanym z kontekstu.

Bo może dałoby się tak zrobić, żeby funkcja nic nie zmieniała, a tylko zwracała nową wartość:

let temp = 1;
function computeNewValue(arg) {
  return arg + 1;
}
temp = computeNewValue(temp);
console.log(temp); // 2

1 użytkowników online, w tym zalogowanych: 0, gości: 1