새소식

WEB/JavaScript

[JavaScript] 값에 의한 전달 Call by value

  • -
call by value란?
const func = (param) => {
  param.a = 10;
  console.log(param); // 10
};

const obj = { a: 5 };
func(obj);
console.log(obj); // 10


// 쉽게 말하자면,
const obj = { a: 5 };
let param = obj 
// 이런 형식으로 객체에 객체가 대입되어 참조 관계가 된 것.

먼저 자바스크립트, 객체 사이의 참조 관계에 관한 이해가 우선이다. 

위 코드에서 객체인 obj는 func 함수가 작동되어 매개변수 param의 값에 대입이 되어 obj와 param은 참조 관계가 되었다. func 가 작동하면서 param의 a값을 변경하면 참조 관계에 있는 obj의 a값도 바뀌게 되어 모두 10을 출력하는 것을 알 수 있다.

 

const func = (param) => {
  param = 10;
  console.log(param); // 10
};

const obj = { a: 5 };
func(obj);
console.log(obj); // { a: 5 }

 

하지만, 객체가 아닌 원시값이 대입될 경우 참조 관계가 이루어지지 않는다. 이러한 점에서 자바스크립트 언어는 call by value 형식을 사용하고 있다. 

 

* 자바스크립트에는 call by reference 형식이 존재하지 않는다. call by reference가 가능한 언어라면 위 코드에서 마지막 console에서 obj의 값이 10으로 출력될 것이다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.