데이터타입 - 기본형과 참조형의 종류 및 차이점

2020. 3. 9. 19:19Javas/자바스크립트핵심개념

 

 

C나 Java 와 같은 프로그래밍 언어에는 정수 타입 변수(int), 부동소수점 타입 변수(double) 등이 있어 그 변수의 타입과 일치하는 데이터만 저장이 가능합니다. 이와 같이 변수에 타입이 있는 언어를 정적 타입 언어(static typed language) 라고 합니다.

하지만 자바스크립트는 변수에 타입이 없으므로, 모든 타입의 데이터를 저장할 수 있습니다. 실행할 때 변수에 저장된 데이터 타입을 동적으로 바꿀 수 있다는 것이죠. 이와 같은 언어를 동적 타입 언어(dynamic typed language) 라고 합니다.

 

기본형

- Number, String, Boolean, null, undefined, +ES6 : Symbol

- 값을 그대로 할당

- 비어있는 데이터 공간 확보 -> 변수명과 매칭 -> 매칭 주소에 데이터 저장

 

참조형

Object, Array, Function, RegExp(정규표현식), +ES6 : map, set, weakmap, weakset

- 값이 저장된 주소값을 할당

- 비어있는 데이터 공간 확보 -> 객체 속 프로퍼티에 대한 공간을 또 다시 확보 -> 객체의 프로퍼티명과 주소를 매칭 -> 확보했던 두 번째 주소에 데이터 할당

 

변수를 선언하면 데이터가 담길 공간을 확보하고, 확보된 데이터의 주소값을 가지고
변수명과 매칭
시키는 선언과정은 동일하나, 할당과정에서 차이가 있습니다.

 

 

예제)

var a;

a = 10;

var b = 'abc'

b= false;

var c = b;

c = 20;

 

변수명

a

b

c

주소

@313

@314

@315

데이터

10

false

20

 

 

var obj = {

a : 1,

b : 'b'

};

var obj2 = obj; // 저장된 주소만을 복사합니다. 

obj2.a = 10; // obj.a 도 10으로 변경됩니다. 

변수명

obj

obj2

       

주소

413

414

...

1011

1012

1013

데이터

@1011

@1011

 

{ a : @1012, b : @1013 }

10

'b'

 

var obj3 = {

a : [4,5,6]

};

변수명

obj3

             

주소

547

...

1184

1185

...

1326

1327

1328

데이터

@1184

 

{ a : @1185 }

[ @1326, @1327, @1328]

 

4

5

6

 

var obj3 = {

a : [4,5,6]

};

obj3.a = 'new'; // 1326, 1327, 1328 의 연결은 끊기게 됩니다.

변수명

obj3

             

주소

547

...

1184

1185

...

1326

1327

1328

데이터

@1184

 

{ a : @1185 }

'new'

 

4

5

6

 

 

'Javas > 자바스크립트핵심개념' 카테고리의 다른 글

this  (0) 2020.03.10
함수  (0) 2020.03.10