Call by Reference vs Call by Value

 

한국말로 하면 참조값에 의한 전달과 값에 의한 전달이다. 참조값에 의한 전달은 메모리 주소를 전달한다. 값에 의한 전달은 주소가 아닌 값을 전달한다. 두 방법은 어떤 함수에 변수가 전달되고 함수 내에서 그 변수가 수정되었을 때, 각각 결과물이 다르다.

 

Call by Value

let str = 'I am call by value';

function transformer(param){
	param = 'I am transformer';
}

transformer(str);

console.log(str);
// 'I am call by value'

문자열(String), 숫자(number), 불리언(boolean), null, undefined 타입의 변수가 전달되었을 경우 값에 의한 참조로, 원래의 변수인 str의 값은 변하지 않는다.

 

Call by Reference

let obj = { greeting: 'I am call by reference'};

function transformer(param){
	param.greeting = 'I am transformer';
}

transformer(obj);

console.log(obj.greeting);
// 'I am transformer'

객체(Object), 배열(Array), 함수(function) 타입의 변수가 전달되었을 경우에는 변수에 할당된 메모리 주소가 전달된다. 그렇기 때문에 원래 변수인 obj의 정보가 수정된다.

'Javascript' 카테고리의 다른 글

[문법] 객체 상속하기  (0) 2019.09.18
[문법] 객체 생성하기  (0) 2019.09.17
[DOM 다루기] template 태그 이용  (0) 2019.09.06

+ Recent posts