개발하다보면 생각보다 함수에 인자로 던졌는데 값이 변경되거나 안되거나 하는 문제들을 직면하지만 그 내용 깊이를 많이 안따지고 넘어갔던 적도 있었다.
그래서 해당 방법, 메커니즘 등을 한 번 알아본다
인수
를 전달할 때 인수의 값이 복사
되어 함수 내에서 사용된다원래 변수
에는 영향을 끼치지 않는다function changeValue(x) {
x = 100;
}
let a = 10;
changeValue(a);
console.log(a); // 10
참조
가 전달된다객체, 배열
등을 참조한다. 영향을 받는다
function changeObject(obj) {
obj.value = 100;
}
let myObj = { value: 10 };
changeObject(myObj);
console.log(myObj.value); // 100
2가지
로 모습이 나뉜다Call by value - 기본 데이터 타입들에 적용
기본 데이터 타입- number, string, boolean, null, undefined, Symbol에 적용
Call by reference - 함수, 배열, 객체에 적용