코딩공부/개발지식

[4.5회 - 데일리과제] Call by Value vs Call by Reference

표자 2023. 4. 19. 10:47

자바스크립트에서는 원시 타입(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