
함수 호출 방법들
function addOne(x) {
x += 1;
return x;
}
let num = 5;
console.log(addOne(num)); // 6
console.log(num); // 5
function addOne(arr) {
arr.push(1);
return arr;
}
let nums = [1, 2, 3];
let result = addOne(nums);
console.log(result); // 출력: [1, 2, 3, 1]
console.log(nums); // 출력: [1, 2, 3, 1] (원본 값도 함께 변경됨)
원래 값이 영향을 받는 단점을 보완하려면 어떻게 해야할까?
-> 깊은복사(deep copy)를 이용하는 방법!
function changeName(obj) {
obj = JSON.parse(JSON.stringify(obj)); // 깊은 복사
obj.name = 'John';
return obj;
}
let person = { name: 'Jane', age: 25 };
let result = changeName(person);
console.log(result); // 출력: { name: 'John', age: 25 }
console.log(person); // 출력: { name: 'Jane', age: 25 } (원본 값은 변경되지 않음)
출처:
https://sudo-minz.tistory.com/91
https://velog.io/@kwontae1313/JS%EC%9D%98-Call-by-Value-%EC%99%80-Call-by-Reference