Data type

2021. 8. 6. 23:57JS

< 기본형 타입의 메모리 흐름 >

선언 먼저, 할당은 나중에.

 

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