반응형
11-22 03:58
Today
Total
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
관리 메뉴

개발하는 고라니

[Javascript] 참조와 복제 본문

Languages/JS

[Javascript] 참조와 복제

조용한고라니 2020. 12. 9. 16:20
반응형

# 참조와 복제

 > 참조를 알아보기 전 '복제'에 대해 먼저 알아보자.

 

# 복제

 > 전자화된 시스템의 가장 중요한 특징은 복제이다. 현실의 사물과 다르게 전자화된 시스템 위의 데이터를 복제 하는데는 비용이 거의 들지 않는다. 바로 이러한 특징이 소프트웨어를 기존의 산업과 구분하는 가장 큰 특징일 것이다. 프로그래밍에서 복제가 무엇인지 알아보자.

var a = 1;
var b = a;
b = 2;

console.log(a); // 1

 > 결과는 당연하다. 값을 변경한 것은 변수 b이기 때문에 변수 a에 담겨있는 값은 그대로이다. 변수 b의 값에 변수 a의 값이 복제된 것이다.

 > var b = a; 일 때, a는 1을 가리키고 있다. 이 때 b는 a의 주소를 가리키는 것이 아닌 a의 데이터를 다른 주소에 따로 복사해서 그 데이터를 가리킨다.

    즉, a와 b가 가리키는 데이터 값은 같지만, 데이터의 주소는 다르다. 그러므로 b = 2라는 문장으로 b가 가리키는 데이터를 변경해도 a가 가리키는 데이터의 값은 1로 동일하다.

 > 변수의 값이 원시 데이터 타입(Primative Data Type)일 때 가능하다.

  (String, Number, Boolean, null, undefined)


# 참조

 

var a = {'id':1};
var b = a;

b.id = 2;

console.log(a.id); // 2
  • 변수 b에 담긴 객체의 id값을 2로 변경했는데, a.id의 값도 2가 된다. 이것은 변수 b와 변수 a에 담긴 객체가 서로 같다는 것을 의미한다. 이를 참조(Reference)라고 한다.
  • 변수의 값이 객체(Object)일 때 가능하다.

 

a = 1;
a = {'id':1};

 > 위 두 개 구문의 차이는 무엇일까?

  • a = 1의 데이터 형은 숫자(원시 데이터 타입)이고, a = {'id':1}의 데이터 형은 객체이다.
  • 자바스크립트에서 원시 데이터형을 제외한 모든 데이터 타입은 객체이다.
  • 객체는 다른 말로는 참조 데이터 형(참조 자료형)이라고도 부른다.
  • 기본 데이터 타입은 복제가 되지만, 참조 데이터 형은 참조된다.

 

 

< 본 포스트의 내용은 '생활코딩' 유튜브를 참조하였습니다. >

반응형
Comments