가끔식 개발을 하다 보면 햇갈리는 부분이 간혹 생겨서 이번 기회에 정리하고자 나름 웹서핑을 하여 결론을 정리해보았습니다.

자바스크립트는 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만 존재합니다.

블로그 이미지

클라인STR

,