-
자바스크립트 기본 - 참조JavaScript/생활코딩 2018. 12. 12. 13:49
참조 - https://opentutorials.org/course/743/6507
복제
아래결과는 1이된다.
var a = 1;
var b = a;
b = 2;
console.log(a); // 1
위의 예제를 그림으로 표현하면 아래와 같다.
b는 복제된 상태이므로 b의 값, 즉 복제본을 아무리 바꿔도 원본은 바뀌지않는다는 개념이 복제이다.
복제는 원시데이터타입에서 동작한다.
참조
var a = {'id':1};
var b = a;
b.id = 2;
console.log(a.id); // 2
위의 예제를 그림으로 표현하면 아래와 같다.
a는 객체이므로 복제가 이루어지지 않고 a,b가 같은 값을 바라보는 참조가 발생한다.
함수와 참조
아래는 원시데이터타입을 인자로 넘겼을 때의 동작 모습니다.
Case1
var a = 1;
function func(b){
b = 2;
}
func(a); //b=a가 된다.
console.log(a); //1
아래와 같은 순서로 동작하기 때문에 a값을 마지막에 호출해보면 1이 나온다.
a = 1
a = b
b = 2
Case2
var a = {'id':1};
function func(b){
b = {'id':2};
}
func(a);
console.log(a.id); // 1
아래와 같은 순서로 동작하기 때문에 a값을 마지막에 호출해보면 1이 나온다.
a = {id;1;}
b = a;
b = {id:2} : b값은 새로운 id값을 생성하여 바라보는 객체를 변경했기 때문에 a값은 여전히 처음부터 바라보고 있었던 1이되는 것이다.
Case3
var a = {'id':1};
function func(b){
b.id = 2;
}
func(a);
console.log(a.id); // 2
아래와 같은 순서로 동작하기 때문에 a값을 마지막에 호출해보면 2가 나온다.
a = {id;1;}
b = a;
b.id = 2 : 현재 a,b 모두 같은 객체인 id:1을 바라보기 때문에 b의 객체의 값을 바꾸면 a,b모두 id:2가 된다.
'JavaScript > 생활코딩' 카테고리의 다른 글
WEB2 - JavaScript - HTML과 JavaScript의 만남 2 (이벤트, 콘솔) (0) 2018.12.17 WEB2 - JavaScript - HTML과 JavaScript의 만남 1 (script 태그) (0) 2018.12.14 자바스크립트 기본 - 데이터 타입 (0) 2018.12.12 자바스크립트 기본 - Object (0) 2018.12.12 자바스크립트 기본 - 표준 내장 객체의 확장 (0) 2018.12.07