Skip to content
On this page

Pass by Reference vs Pass by Value

Title
Pass by Reference vs Pass by Value
Category
Programming
Tags
Aliases
Pass by Reference vs Pass by Value참조로 전달 vs 값으로 전달
Related
Created
2 years ago
Updated
last year

pass-by-reference-vs-pass-by-value-animation

함수를 호출할 때, 함수에 전달된 인자(argument)는 매개변수에 복사된다.

js
function showMessage(from, text) {
	console.log(from); // => 'Ahn'
	console.log(text); // => 'Hello'
}

showMessage('Ann', 'Hello!');
function showMessage(from, text) {
	console.log(from); // => 'Ahn'
	console.log(text); // => 'Hello'
}

showMessage('Ann', 'Hello!');

JavaScript 값(Value)의 특성에 의해 원시 값(Primitive)'값 그대로' 복사되지만, JavaScript 객체(Object)'참조(reference)' 가 복사된다.

이를 구분하기 위해 참조로 전달(pass by reference)과 값으로 전달(pass by value)라는 용어를 사용하지만, 기존 변수에 값을 복사하는 원리와 동일하다고 볼 수 있다.

js
let foo = 1;
let bar = foo;

bar += 1;
console.log(foo); // 1

let objA = {
	foo: 1,
};
let objB = objA;

objB.foo += 1;
console.log(objB.foo); // 2
let foo = 1;
let bar = foo;

bar += 1;
console.log(foo); // 1

let objA = {
	foo: 1,
};
let objB = objA;

objB.foo += 1;
console.log(objB.foo); // 2

함수에서 참조로 전달된 객체가 변하는 부수 효과(Side Effect)를 막기 위해 전달된 객체를 불변(Immutable)하게 통제하는 방법을 사용하기도 한다.

References

Released under the MIT License.