본문 바로가기
JavaScript +HTML5 + CSS3

[Core JavaScript] 1. Data Type

by doozzuri 2021. 8. 29.
반응형

1. 자바스크립트 데이터 타입

1.1 Primitive Type(기본형)

  • 기본형 변수의 메모리 할당 
    (1) var a  선언. 메모리(주소/데이터)에서 데이터에 이름 a 지정
    (2) 'abc'를 비어있는 임의의 다른 공간의 메모리(주소/데이터) 할당.
    (3) 'abc'의 주소를 들고 'a'가 할당된 곳을 찾아가서 값에 '@abc의 주소'를 넣음. 
    (4) a = 'abc' 문자열 'abc'를 a에 할당하라
    (5) var a를 선언하면 컴퓨터가 하는 일은 데이터가 담길 임의의 공간을 확보함
    (6) a = 'abcd' 문자열을 넣으면 'abc'를 수정할 것같지만, 컴퓨터는 그렇게 하지않음
    (7) 임의의 공간을 다시 할당하여 'abcd' 값을 넣음
    (8) 다시 'abcd'의 주소값을 들고 'a'가 할당된 공간을 찾음. 
    (9) a의 값을 '@abcd'의 주소로 바꿈 

  • Number
  • String
  • Boolean
  • null
  • undefined
  • Symbol

1.2 Reference Type(참조형) - Object

  • 참조형 변수의 메모리 할당 
    (1) var obj = { a : 1, b : 'bbb' }; 선언.  var obj에 대한 선언이 먼저 이루어지는것.
    (2) obj에 대한 임의의 공간에 할당이 일어나고 거기의 이름을 obj 로 저장
    (3) {..} 안에 여러개의 프로퍼티가 있으므로 임의의 공간에 그 프로퍼티의 주소에 대한 범위를 지정
    (4) 배정된 주소에 프로퍼티 하나 하나씩 할당('값 : @a의주소 ~ @b의주소')
    (5) a 프로퍼티에 대한 할당은 기본형과 동일. (값: 1) -> (이름: a 값: @'1의주소')
    (6) b 프로퍼티에 대한 할당은 기본형과 동일. (값: 'bbb') -> (이름: b 값: @'bbb의주소')
    - 기본형에 비해 참조형이 메모리할당과정을 1번 더 거침.
    - 이미 선언된 값이 있으면, 새로 만들지 않고 그 값의 주소를 사용함.
    - 참조카운트가 0인 메모리는 가비지컬렉터의 수집대상으로 사라짐. 
  • Array
  • Function
  • RegExp
  • Set/WeakSet
  • Map/WeakMap

 

2. 자바스크립트 메모리 구조

2.1 Stack memory

  • 변수 저장
  • 기본형 데이터 저장
  • 정적할당

 

2.2 Heap memory

  • 참조형 데이터 저장
  • 동적할당

 

2.3 값의 주소를 저장하는 이유

값을 직접 저장 값의 주소를 저장
데이터 할당시에는 빠름 데이터 할당시에는 느림
비교에는 비용이 많이 듦 비교에 비용이 들지 않음
메모리 낭비가 심함 메모리 낭비 최소화 

-> 같은 값이 전체 메모리 공간상에 오직 하나만 존재 = 불변값

반응형

'JavaScript +HTML5 + CSS3' 카테고리의 다른 글

[Core JavaScript] 3. this  (0) 2021.08.29
[Core JavaScript] 2. Execution context  (0) 2021.08.29
[JQuery] Ajax  (0) 2021.08.16
[JQuery] 선택자(Selector)  (0) 2021.08.16
[JQuery] 제이쿼리  (0) 2021.08.16