본문 바로가기
Lang

call by reference, call by value, 자바스크립트에서의 call by

by 상똥 2024. 11. 26.

0. call by ~

- 함수 사이에서 인자가 전달되고 처리하는 방식을 설명하는 개념

 

1. call by value

- 함수에 값을 전달할 때 값을 복사하는 방식

- 장점 : 원본 데이터를 보호할 수 있음

- 단점 : 큰 데이터 전달(복사) 시 성능 저하

- 예시

function callByValue(x) {
  x = 10; // 함수 내부에서 x 값을 변경
  console.log("Inside function:", x); // Inside function: 10
}

let num = 5;
callByValue(num); // x에 num의 값(5)이 복사되어 전달됨
console.log("Outside function:", num); // Outside function: 5 (원본 num은 영향을 받지 않음)

 

2. call by reference

- 함수에 값을 전달할 때 메모리 주소를 전달하는 방식

- 장점 : 큰 데이터 전달 시 효율적

- 단점 : 원본 데이터가 변경될 우려가 있음

- 예시

function callByReference(obj) {
  obj.value = 42; // 객체의 속성을 변경
  console.log("Inside function:", obj); // Inside function: 42
}

let myObj = { value: 10 };
callByReference(myObj); // obj에 myObj의 참조가 전달됨
console.log("Outside function:", myObj); // Outside function: 42 (원본이 변경됨)

 

3. 자바스크립트

- 원시 타입 : call by value 방식

(* ES6기준 원시 자료형 : string, number, boolean, bigint, undefined, symbol)

- 참조 자료형 : call by reference 방식와 비슷하게 동작함, 참조 주소를 복사하기 때문

(* 참조 자료형 : 객체, 배열)

- 결론 : javascript에서 원시 타입은 값을 복사하고, 참조 자료형은 참조 주소를 복사하는 방식으로 동작하므로, 엄밀히 따지면 자바스크립트는 call by value 방식으로 동작한다.

 

 

'Lang' 카테고리의 다른 글

[TS] 타입스크립트 개요  (1) 2024.11.09