[Javascript] call by value & call by reference

Dev_sheep·2024년 7월 31일
0

개발하다보면 생각보다 함수에 인자로 던졌는데 값이 변경되거나 안되거나 하는 문제들을 직면하지만 그 내용 깊이를 많이 안따지고 넘어갔던 적도 있었다.

그래서 해당 방법, 메커니즘 등을 한 번 알아본다

Call by value

  • 값에 의한 호출이며 함수에 인수를 전달할 때 인수의 값이 복사되어 함수 내에서 사용된다
  • 즉, 원래 변수에는 영향을 끼치지 않는다
function changeValue(x) {
  x = 100;
}

let a = 10;
changeValue(a);
console.log(a); // 10

Call by reference

  • 참조에 의한 호출이며 함수에 인수를 전달할 때 참조가 전달된다
  • 즉, 함수 내에서도 동일한 객체, 배열 등을 참조한다.
  • 그렇기에 원래의 변수도 영향을 받는다
function changeObject(obj) {
  obj.value = 100;
}

let myObj = { value: 10 };
changeObject(myObj);
console.log(myObj.value); // 100

Javascript의 모습

  • 자바스크립트는 2가지로 모습이 나뉜다

Call by value - 기본 데이터 타입들에 적용
기본 데이터 타입- number, string, boolean, null, undefined, Symbol에 적용

Call by reference - 함수, 배열, 객체에 적용

profile
기록과 공유

0개의 댓글