-
< 기본형 타입의 메모리 흐름 >
선언 먼저, 할당은 나중에.
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
값 : @50035003 5004 '12345' 'abcdef' 이렇게 값으로 지정된 위치가 바뀐다.
< 참조형 타입의 메모리 흐름 >
var object = { a: 11, b: 'aaa' };
메모리 위치는 확보했지만, 메모리 구조상 한개씩 밖에 넣지 못하기때문에 다 들어갈 수 없다.
여러개를 넣어놓고 묶음처리해서 그 주소를 넣는다.
@7003 ~ ?(여기부터 여기까지 들어가있는 데이터들은 전부 다 이 객체야.)
object.a = 22;
만약 이렇게 객체의 프로퍼티 값이 변경된다면?
기본형 타입처럼 값의 위치가 바뀔까?
1002 ... 이름 : object
값 : @50021. 일단 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