Primitive type (기본형)
- Number
- String
- Boolean
- null
- undefined
- (ES6) Symbol
Reference type (참조형)
- 대표적으로 Object(객체)가 있고, 그 하위에
- Array(배열)
- Function(함수)
- RegExp(정규표현식)
- (ES6) Set / WeakSet
- (ES6) Map / WeakMap
기본형과 참조형의 차이점은 각 데이터가 메모리 상에서 저장되는 형태의 차이점이 있다.
실제 자바스크립트의 메모리 구조 2종류
stack memory
- 변수와 함께 기본형 데이터가 저장된다
heap memory
- 참조형 데이터가 저장된다
** 추상화 시킨 메모리라는 정의 아래에 설명된 내용임
------
표는 메모리이다. 메모리가 각각 하나의 셀에 주소(1001,1002 ... )가 있는 것임.
var a; 선언 시 , 데이터가 담길 공간을 확보함. 주소는 랜덤으로. 임의로 1003에 저장
a = 'abc'; 비어있는 다른 메모리 공간에 저장. 임의로 5004에 저장
변수 a의 공간
인 1003에 있는 값에 @5004를 넣는다.
그 이후에
a = 'abcderf';를 다시 저장한다면 5004가 아닌 다른 공간(임의로 5005)에 다시 저장하여 1003에값을 5005로 바꿈
-------참조형 변수
둘이 같다는 것을 우리는 알고 있지만, 컴퓨터가 처리하는 순서 방식이 다르다.
1. 임의의 공간 1002에 obj 변수 저장
2. obj 안에 a,b 2개의 값을 한 공간에 넣을 수 없기 때문에 a,b 공동의 임의 공간 @5002에 두개의 값이 들어갈 주소(@7103~?)을 저장 (= 전부 7103 객체의 프로퍼티야 " 라고 저장한다.
3. a프로퍼티 주소는 @7103에, b 프로퍼티 주소는 @7104이다.
4. a의 값인 1은 @5003에 저장되고, 'bbb'는@5004에 저장된다.
5. @5003, @5004는 7103,7104에 저장하게 된다.
'Programming > JavaScript' 카테고리의 다른 글
코어자바스크립트 this binding (0) | 2024.04.22 |
---|---|
코어 자바스크립트 실행컨텍스트 (0) | 2024.04.22 |
[코딩악마] 자바스크립트 기초 강좌 : 100분 완성 (2) (0) | 2024.04.08 |
[코딩악마] 자바스크립트 기초 강좌 : 100분 완성 (1) (0) | 2024.04.08 |
3월 26일 (0) | 2024.03.26 |