var a = 1;
var b = a;
b = 2;
console.log(a); // 1
var a = {'id':1};
var b = a;
b.id = 2;
// b = {'id':2} -> 결과값이 1로 바뀜 b에 새로운 데이 추가하는것이기때문
console.log(a.id); // 2
//b에 담긴 프로포티값을 바꿔주면 a의 프로포티값도 변경된다.
그럼 일종의 변수할당이라고 할 수 있는 메소드의 매개변수는 어떻게 동작하는가를 살펴보자.
var a = 1;
function func(b){
b = 2;
}
func(a);
console.log(a); // 1
var a = {'id':1};
function func(b){
b = {'id':2};
}
func(a);
console.log(a.id); // 1
var a = {'id':1};
function func(b){
b.id = 2;
}
func(a);
console.log(a.id); // 2
파라미터 b는 객체 a의 레퍼런스다. 이 값의 속성을 바꾸면 그 속성이 소속된 객체를 대상으로 수정작업을 한 것이 되기 때문에 b의 변경은 a에도 영향을 미치게 된다.