Call by value와 Call by reference의 차이?

이동준·2023년 7월 23일
0

자바스크립트

목록 보기
3/28

Call by value와 Call by reference란?

call by valuecall by reference 란, 변수나 객체등이 함수의 인자(argument)로 들어와 매개변수(parameter)로 전달될 때 어떤 방식으로 전달될 지를 결정하는 방식이다.

함수의 호출 방식은 크게 두가지
1. Call by value
- 값에 의한 호출, 값의 복사
2. Call by reference
- 참조에 의한 호출, 주소의 복사

참조형에 따른 방식의 차이

일반적으로 원시형(원시값의 data type)을 매개변수로 넘길 때에는 call by value 방식으로 넘기게 되고,
참조형(객체)을 매개변수로 넘길 때에는 call by reference 방식으로 넘기게 된다.

원시값 : Number, String, BigInt, Symbol, Boolean, Null, undefined
참조값 : 객체, 배열, 함수, 날짜, 정규표현식 등등

parameter / argument

인자(argument)는 어떤 함수가 호출될 때, 전달되는 값을 의미,
매개변수(parameter)는 전달된 값을 받아들이는 변수를 의미한다.

function sum(a,b) {  // a, b는 매개변수 (parameter)
	return a + b;
}

sum(5, 10);	 // 5, 10 은 인자 (argument)

Call by value

call by value 는 값의 복사, 말 그대로 복사된 값을 인자로 넘겨 매개변수로 전달한다.
원시값(Primitive type)의 경우 call by value 방식으로 전달된다.
장점으로는 복사하여 처리하기 때문에 안전하다는 점, 원래의 값이 보존된다는 점,
단점으로는 복사하기 때문에 메모리 사용량이 늘어난다는 점이 있다.

Call by reference

call by reference 는 주소값의 복사, 실제 데이터가 존재하는 주소를 가리키는 주소값을 인자로 넘겨 매개변수로 전달한다.
참조값(obj, array, function 등)은 call by reference 방식으로 전달된다.
장점으로는 복사하지 않고 직접 참조하기 때문에 빠르다.
단점으로는 직접 참조를 하기에 원래 값이 영향을 받는다. (안전성 리스크)

0개의 댓글