Data type
2021. 8. 6. 23:57ㆍJS
< 기본형 타입의 메모리 흐름 >
선언 먼저, 할당은 나중에.
var a;
1001 | 1002 | 1003 | 1004 | ... |
이름 : aa 값 : @5004 |
일단 메모리 안에 데이터가 담길 공간을 미리 확보하고, 이렇게 확보한 공간의 이름을 식별자 a로 지정한다.
5001 | 5002 | 5003 | 5004 | ... |
'abcdef' |
a= "abcdef";
abc라는 문자열을 할당하라는 명령이 들어오면, 우선 문자열 abcdef를 다른 빈공간(ex.5004)에 넣는다.
그 후 1002번으로 가서, 1002의 값을 @5004를 넣는다
-그런데 여기서 a의 값이 바뀐다면?
a= "12345";
1002 | ||||
이름 : aa 값 : @5003 |
5003 | 5004 | |||
'12345' | 'abcdef' |
이렇게 값으로 지정된 위치가 바뀐다.
< 참조형 타입의 메모리 흐름 >
var object = {
a: 11,
b: 'aaa'
};
메모리 위치는 확보했지만, 메모리 구조상 한개씩 밖에 넣지 못하기때문에 다 들어갈 수 없다.
여러개를 넣어놓고 묶음처리해서 그 주소를 넣는다.
@7003 ~ ?(여기부터 여기까지 들어가있는 데이터들은 전부 다 이 객체야.)
object.a = 22;
만약 이렇게 객체의 프로퍼티 값이 변경된다면?
기본형 타입처럼 값의 위치가 바뀔까?
1002 | ... |
이름 : object 값 : @5002 |
1. 일단 object를 1002번에 확보하고 확보된 공간에 객체를 담아야하니까 5002번
5002 | 5003 | 5004 | 5005 |
@7003 ~ ? | 11 | 'aaa' | 22 |
2.그 5002번은 7103~? 을 가지고 있다.
7103 | 7104 | ||
이름: a 값: @5005 |
이름: b 값: @5004 |
참조형은 한단계 더 들어가서 저장하기 때문에, 객체의 프로퍼티 값을 변경을 해도 값의 위치가 바뀌지 않는다
그럼 참조형 속의 참조형은? 어떻게 넣을까?
var object = {
x=3,
arr=[3,4]
};
이렇게 선언과 할당이 되었다고 가정하면...
참조형 안에 또 참조형이 있다.



'JS' 카테고리의 다른 글
callback (0) | 2021.08.10 |
---|---|
this (0) | 2021.08.09 |
this (0) | 2021.08.08 |
Execution Context (0) | 2021.08.07 |
form - input 상관관계, event 막기 (0) | 2021.08.06 |