JavaScript/변수

Trooper·2022년 8월 4일
0

JavaScript

목록 보기
6/13
post-thumbnail
post-custom-banner

변수는 하나의 값을 저장하기 위해 확보한 메모리공간을 식별하기 위한 이름이다.
자바스크립트에서 변수를 사용할려면 선언이 필요하다.
변수를 선언할 때는 var, let, const 키워드를 사용한다.

  • 자바스크립트 엔진의 변수 선언 단계
    - 선언 단계 : 자바스크립트 엔진에 변수의 존재를 알린다.
    - 초기화 단계 : 값을 저장하기 위해 메모리 공간을 확보하고 암묵적으로 undefined 할당 초기화한다.
    - 할당단계 : 사용자가 undefined로 초기화된 메모리의 다른 값을 할당하는 단계이다.

변수 선언 var, let, const

var 와 let,const의 가장 큰 차이점은 중복선언, 스코프와,변수 호이스팅이다.

var는 중복 선언이 가능하지만 let, const는 중복 선언이 불가능하다.
var는 함수레벨스코를 따르고 let,const는 블록레벨 스코프를 따른다.
var는 변수 호이스팅이 일어나고 let,const는 호이스팅이 일어나지 않은 것처럼 보인다.
let,const도 호이스팅이 일어나지만 TDZ때문에 Referecn Error를 발생시킨다.

letconst의 차이점은 값의 재할당이다

  • let 값 재할당 가능
  • const 값 재할당 불가능

TDZ (Temporary Dead Zone) 일시적 사각 지대
스코프의 시작 지점부터 초기화 시작 지점까지의 구간
변수 선언단계 및 초기화단계 하기 전 사이의 사각지대 구간

호이스팅

코드가 실행하기 전 변수선언/함수선언(선언문)이 해당 스코프의 최상단으로 끌어 올려진 것 같은 현상을 말합니다. 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미합니다.

변수의 선언과 초기화를 분리한 후, 선언만 코드의 최상단으로 끌어올려진 현상인데 ES6이후 const, let 선언도 호이스팅 대상이지만 변수를 undefined로 초기화하지는 않습니다.
const, let은 TDZ(Temporal Dead Zone)에 들어가 ReferenceError를 발생합니다.

Reference

  • 모던 자바스크립트 Deep Dive - 이웅모
profile
Web FrontEnd Developer
post-custom-banner

0개의 댓글