ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ES6] var, let, const 비교
    맨땅에코딩/javascript 2020. 6. 26. 16:45

    [서문]

     

    1.블록 레벨 스코프

     

    함수 레벨 스코프 (function-level scope)

    : 함수 내에서 선언된 변수는 함수 내에서만 유효하며 함수 외부에서는 참조할 수 없다. 즉, 함수 내부에서 선언한 변수는 지역 변수이며 함수 외부에서 선언한 변수는 모두 전역 변수이다.

     

    블록 레벨 스코프 (Block-level scope)

    : 모든 코드 블록(함수, if문, for문, while문, try/catch문 등) 내에서 선언된 변수는 코드 블록 내에서만 유효하며 코드 블록 외부에서는 참조할 수 없다. 즉, 코드 블록 내부에서 선언한 변수는 지역 변수이다.

     

    2. 호이스팅

    var, let, const, function등의 선언문을 해당 스코프의 선두로 옮긴 것처럼 동작하는 특성

     

    선언 단계 (Declaration phase)

    : 변수를 실행 컨텍스트의 변수 객체에 등록한다. 이 변수 객체는 스코프가 참조하는 대상이 된다.

     

    초기화 단계 (Initialization phase)

    : 변수 객체에 등록된 변수를 위한 공간을 메모리에 확보한다. 이 단계에서 변수는 undefined로 초기화된다.

     

    할당 단계 (Assignment phase)

    : undefined로 초기화된 변수에 실제 값을 할당한다.

     

    3. 클로져

    : 함수를 일급 객체로 취급하는 함수형 프로그래밍 언어에서 사용되는 중요한 특성이다.

    MDN 정의 ) 클로저는 함수와 그 함수가 선언됐을 때의 렉시컬 환경 (Lexical environment) 과의 조합이다.

     

    렉시컬 스코핑

    : 스코프는 함수를 호출할 때가 아니라 함수를 "어디에" 선언하였는지에 따라 결정된다.

    렉시컬 스코프

    : 자신이 속한 상위 스코프

     

    [결론]

     

    var vs let

    • 전역객체(Global Object)는 모든 객체의 최상위 객체 의미, Browser : windowrorcp, server-side : global객체
    • var 키워드로 선언된 변수로 사용하면 전역 객체의 프로퍼티가 된다.
    • let 전역 변수는 전역 객체의 프로퍼티가 아니다. window.a 처럼 접근 할 수 없다. 보이지 않는 개념적 블ㄺ 내에 존재

    let vs const 

    • 상수를 위해 사용됨 (반드시 상수만을 위한 것은 아니다.)
    • let은 재할당이 가능하나 const는 불가능하다. > 선언과 동시에 할당이 이뤄져야 한다.
    • 블록레벨 스코프
    • 재할당은 불가능하지만 객체의 내용은 변경할 수 있다.

    [참조]

    https://poiemaweb.com/es6-block-scope

    '맨땅에코딩 > javascript' 카테고리의 다른 글

    apply,call,bind 비교  (0) 2020.09.11
    [ES6] WeakSet vs Set [번역]  (0) 2020.08.09
    [ES6] WeakMap vs Map [번역]  (0) 2020.08.09
    [ES6] Set vs Array 비교 [번역]  (0) 2020.08.07
    [ES6] Map vs Object 비교 [번역]  (0) 2020.08.07
Designed by Tistory.