티스토리 뷰

Call by value & Call by reference

●Path by Value (값에 의한 전달)

  아래 예제에서 primitive type 변수 value를 인자로 넘기면 해당 값은 복사되어 매개변수로 전달된다.

  즉, 복사된 값이 전달 된 것이므로 param의 값이 변경되어도 value에는 영향을 끼치지 않는다.

 

const  value  =  1;

function  example( param ){

    param  =  0;

    console.log(param);  //  0

    console.log(value);  //  1

};  

 

example( value );

 

●Path by Reference (참조에 의한 전달)

  아래 예제에서 참조타입 변수 originObject를 인자로 넘기게 되면 해당 객체의 주소 값을 가진 참조가 복사되어 매개 변수로 전달된다.

   즉, 동일한 참조를 가리키는 변수이기 때문에 매개변수 paramObject의 값을 변경하는 것은 originObject를 변경하는 것과 같다.

const  originObject  =  { first : 'start',  second : 'end' };

function  example( paramObject ){ 

    delete paramObject.second;

    paramObject.first  =  'not start';

    console.log( paramObject );  //  { first : 'not start' }

};

example( originObject );

console.log( originObject );  //  { first : 'not start' }

  

 

댓글