ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터 타입 - Javascript 핵심 개념 | 정재남
    Javascript/ECMAScript 2009 (ES5) 2020. 3. 13. 19:39
    반응형

    [출처 : https://www.inflearn.com]

    강의 Intro

    [Section1] 데이터 타입

     : 데이터가 메모리에 저장되는 방식을 확인함으로써 기본형과 참조형의 데이터가 발생하는 이유

     

    [Section2] 함수

     : 호이스팅, 선언방식별 차이점, 함수스코프와 실행컨텍스트의 정의 및 자바스크립트 엔진이 해석하는 순서, 메소드와 함수의 구별하는 법과 콜백함수의 정의 및 특징

     

    [Section3] this 

     : 상황별로 달라지는 this와 명시적인 this 바인딩 방법(call, apply, bind 메소드)

     

    [Section4] closure

     : 클로저의 의미, 클로저로 private 변수 생성 방법

     

    [Section5] prototype

     : 다이얼그램을 활용해서 자바스크립트 전반을 아우르는 동작 원리

     

    [Section6] class

     : 프로토타입 체이닝을 활용하여 클래스 상속 및 다중 상속 구현


    데이터 타입 - 기본형과 참조형의 종류 및 차이점

    # Primitive Type(기본형)

    : 값을 그대로 할당

     *Number, String, Boolean, null, undefined + (ES6) symbol 

     

    #Reference Type(참조형)

    : 값이 저장된 주소값을 할당(참조)

     * [Object] Array, Function, RegExp + (ES6) Map, Set, WeakMap, WeakSet 

     

    ※ 기본형 데이터의 예제

    - 메모리 상에 저장되는 형태를 추상화 (실제 메모리 동작의 흐름을 이해할 수 있다.)

    - 변수명/주소의 표와 주소/데이터의 표는 별개의 저장공간이 아니며, 변수명/주소의 표가 313번보다 앞에 있다고 생각하자

    var a;         // 빨간 글씨
    a = 10;        // 빨간 굵은 글씨
    var b = 'abc'; // 파란 글씨
    var c = b;     // 초록 글씨
    c = 20;        // 초록 굵은 글씨
    변수명 a b c  
    주소 @313 @314 @315  
    주소 ... 313 314 315 316 317 ...
    데이터   값없음10 'abc' 'abc' ⇒ 20      

    # 선언 : 공간을 확보하고 해당 공간의 주소를 변수명과 매칭

    # 할당 : 해당 변수가 가리키는 주소의 공간에 데이터를 저장

     

    ※ 참조형 데이터의 예제

    var obj = {};            // 빨간 글씨
    obj.a = ""; obj.b = "";  // 빨간 굵은 글씨
    obj.a = 1; obj.b = "b";  // 빨간 굵은 기울어진 글씨
    // 객체생성 끝           // 빨간 굵은 기울어진 취소선 글씨
    
    var obj2 = obj  // 파란 글씨 
    obj2.a = 10;    // 파란 굵은 글씨
    
    console.log(obj2.a); // 10
    console.log(obj.a);  // 10
    // obj === obj2 ; 서로 동일한 객체의 주소(1011)를 참조한다.
    변수명 obj obj2    
    주소 @413 @414    
    주소 ... 413 414 ... 1011 1012 1013 ...
    데이터   값없음 ⇒ @1011 @1011   {
      a : @1012,
      b : @1013
    }
    값없음 1 10 값없음 'b'  

    - 위 과정을 데이터 공간에 기본형 데이터가 담길 때까지 반복한다. 즉 참조형 데이터는 기본형 데이터의 집합이다.

    - 참조가 이뤄지는 형식 : 따로 저장된 객체의 주소(1011)만 복사한다.

     

    # property : 프로퍼티명은 변수와 비슷한 성질

    # value : 변수에 할당되는 data와 비슷한 성질

     

    ※ Nested Object(중첩된 객체)의 예제   

     *Nested Object : 참조형 데이터 안에 또 다시 참조형 데이터가 있는 경우

    var obj3 = {};      // 빨간 글씨
    obj3.a = "";        // 빨간 굵은 글씨
    obj3.a = [];        // 파란 글씨
    obj3.a = [4, 5, 6]; // 파란 굵은 글씨
    // 대입 완료        // 빨간 굵은 기울어진 글씨
    
    obj3.a = "new"      // 초록 글씨
    // 1326 ~ 1328 주소의 데이터를 참조하는 곳이 없어진다. Danling Object가 된다.
    변수명 obj3      
    주소 @547      
    주소 ... 547 ... 1184 1185 ... 1326 1327 1328 ...
    데이터   값없음 ⇒ @1184   {
      a : @1185
    }
    [
      @1326,
      @1327, ⇒ 'new'
      @1328
    ]
     

    값없음4
    G.C 대상

    값없음5
    G.C 대상

    값없음6
    G.C 대상
     

    # Danling Object: '정리되지 않은 메모리', '유효하지 않은 메모리 주소'를 말한다.    *자바에서는 Garbage라고 부른다.

    # G.C 과정(Mark and Sweep)

    : G.C(Garbage Collector)가 스택의 모든 변수 또는 Reachable 객체를 스캔하면서 각각 어떤 객체를 참조하고 있는지 찾는 과정이 Mark라고 한다. 이 과정에서 Stop the world가 발생한다. 이후 Mark 되어있지 않은 객체들을 힙에서 제거하는 과정이 Sweep이다.

     

    반응형

    댓글

Luster Sun