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 |
---|