call by value, call by reference, call by sharing
call by value, call by reference, call by sharing 들은 인자와 매개변수 간의 관계를 의미한다.
call by value
원시값은 복사가 되서 매개변수에 들어간다.
function func(arg) {
console.log(arg);
}
func(5);
아래의 코드는 함수의 인자로 객체를 전달했을 때 함수 내의 코드에 의해 원래 인자 값도 바뀔 수 있다.
function func(arg) {
arg.a = 10;
console.log(arg);
}
var data = {a:5};
func(data);
자바스크립트에서는 포인터 같은 call by reference가 존재하지 않는다! 객체 속성을 수정할 때는 참조이지만, 객체 자체를 수정할 때는 관계가 깨진다. 이를 call by sharing이라고도 한다. 아래의 코드는 call by reference가 아니라는 것을 보여준다.
function func(arg) {
arg = 8;
console.log(arg);
}
var data = {a:5};
func(data);
console.log(data);//{a:5}
Last updated
Was this helpful?