ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Data type
    JS 2021. 8. 6. 23:57

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

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

     

    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
Designed by Tistory.