자바스크립트에서는 원시 타입(primitive type)의 값은 call by value(값에 의한 호출)로 전달되고,
객체 타입(object type)은 call by reference(참조에 의한 호출)로 전달됩니다.
Call by value는 변수에 저장된 값을 복사해서 전달하는 방식입니다. 이 방식에서는 변수의 복사본이 전달되므로
함수 내부에서 전달 받은 값을 변경해도 원래 변수의 값은 변경되지 않습니다.
let x = 1;
function addOne(num) {
num = num + 1;
}
addOne(x);
console.log(x); // 1
반면에 call by reference는 변수 자체가 전달됩니다. 이 방식에서는 해당 변수의 주소를 전달하므로 함수 내부에서 전달 받은 값을 변경하면 원래 변수의 값도 변경됩니다..
let arr = [1, 2, 3];
function addElement(array) {
array.push(4);
}
addElement(arr);
console.log(arr); // [1, 2, 3, 4]
Call by value는 변수에 저장된 값을 복사해서 전달하는 방식입니다.
장점은 복사하여 처리하기 때문에 매개변수로 전달된 값이 보존되고 안전합니다.
단점으로는 복사를 하기 때문에 메모리 사용량이 늘어납니다.
call by reference는 변수 자체가 전달됩니다.
장점은 복사하지 않고 직접 참조를 하기 때문에 실행 속도가 빠릅니다.
단점은 직접 참조를 하기 때문에 원래의 값이 영향을 받습니다
728x90
'코딩공부 > 개발지식' 카테고리의 다른 글
[6회 - 데일리과제] Promise, async & await / 클로저 (0) | 2023.04.20 |
---|---|
[5회 - 데일리과제] 보안 / 개발 방법론 (0) | 2023.04.19 |
[4회 - 데일리과제] 자료구조와 알고리즘 / 데이터베이스와 ORM (0) | 2023.04.18 |
[3회 - 데일리과제] HTTP/HTTPS & RESTful API (0) | 2023.04.17 |
[2회 - 데일리과제] 동기와 비동기 & 프로세스와 스레드 (0) | 2023.04.14 |