참조

복제

전자화된 시스템의 가장 중요한 특징은 복제다

var a = 1;
var b = a;
b = 2;
console.log(a); // 1

변수 b의 값에 변수 a의 값이 복제된 것이다 (** 복제되었다고 값이 변하지 않는다 **)

연결되어 있지 않은 별도의 데이터

참조

var a = {'id':1};
var b = a;
b.id = 2;
// b = {'id':2} -> 결과값이 1로 바뀜 b에 새로운 데이 추가하는것이기때문
console.log(a.id);  // 2
//b에 담긴 프로포티값을 바꿔주면 a의 프로포티값도 변경된다.

참조는 똑같은 객체를 바라보게됨으로 a.id값이 -> 2 가 출력이된다.

함수

그럼 일종의 변수할당이라고 할 수 있는 메소드의 매개변수는 어떻게 동작하는가를 살펴보자.

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에도 영향을 미치게 된다.

Last updated