실무이야기
Javascript call by value, call by reference
클라인STR
2021. 3. 22. 22:38
가끔식 개발을 하다 보면 햇갈리는 부분이 간혹 생겨서 이번 기회에 정리하고자 나름 웹서핑을 하여 결론을 정리해보았습니다.
자바스크립트는 call by value 만 존재한다는 게시글과 call by value, call by reference 둘 다 존재한다는 게시글도 제법 보였습니다.
function callByValue(a) {
a = 55;
console.log(a);
}
var a= { obj : 44 };
해당 함수를 콘솔에 실행하면 아래와 같은 결과 값이 도출됩니다.
callByValue 함수에 a변수를 호출하면 a의 값이복사되어 전달되어 함수 내부에서 a에 값이 55로 바뀌어 출력됩니다.
console.log로 a변수를 호출하면 위에 값이 {obj : 44 } 값이 출력되는 것을 확인할 수 있습니다.
function callByValue2(o) {
o.obj = 55;
console.log(o);
}
var a = { obj : 44};
객체의 obj를 매개변수로 호출하여 함수 스코프네에서 객체값을 수정할 경우 참조된 객체 값이 수정된 상태를 유지합니다.
이를 Call by Sharing이라는 용어로 표현하기도 합니다.
결론적으로 자바스크립트는 Call by Value만 존재합니다.