View

pass by value (in Javascript)

special 2021. 8. 16. 21:05

Javascript에서는 pass by reference가 없고,

pass by value만 있다.

 

value는 복사되고 이 복사된 value가 argument로서 넘겨지는 것이다.

복사된 것을 바꿀 수 있지만 원래 value는 그대로 유지된다. 

예를 들어,

 

function changeValue(a) {
	a = 5;
    console.log(a); // 5
}

const a = 1;
changeValue(a);

console.log(a); // 1

function changeValue에서 a는 5로 변경된 것 처럼 보이겠지만, 

실제로 a는 변경되지 않았다.

변경된 것은 a의 복사본이다.

 

object도 또한 pass by value인데, 여기에는 차이가 있다.

object는 메모리에 참조(reference)할 주소를 value로 가지고 있다.

 

따라서 object의 경우에는 object가 가리키는 주소를 복사하는 것이다.

따라서 function 내부에서 object를 수정하면 해당 object에도 영향이 미치게 된다.

예를들어,

function changeValue(obj) {
	obj.newProp='Hi';
}

const obj = {
	prop: 'Hello'
};

changeValue(obj);
console.log(obj); // {prop: "Hello", newProp: "Hi"}

따라서 특히 object를 다룰 때에는 주의할 필요가 있다.

 

다른 언어는 pass by value 혹은 pass by reference (primitive types또한)를 선택할 수 있는데

Javascript는 pass by value이다. (object는 value가 refernce인 것이다.)

Share Link
reply
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28