하루에 한 문제

var, let, const 본문

Dev/JavaScript

var, let, const

dkwjdi 2021. 4. 4. 01:03

var, let, const의 차이점

  1. var는 함수 레벨 스코프이고, let, const는 블럭레벨 스코프이다.
  2. var로 선언한 변수는 선언 전에 사용해도 에러가 나지 않지만 let, const는 에러가 발생(호이스팅)
  3. var는 이미 선언되어 있는 이름과 같은 이름으로 변수를 또 선언해도 에러가 나지 않지만 let, cnost는 이미 존재하는 변수와 같은 이름의 변수를 또 선언하면 에러가 난다.
  4. var, let은 변수 선언시 초기 값을 주지 않아도 되지만 const는 반드시 할당해야함
  5. var, let은 다시 값을 할당할 수 있지만 const는 할번 할당한 값은 변경할수 없음

 

2번을 보게되면 var만 호이스팅이 되는건가??? 라고 생각할 수 있다.

하지만 var, let, const, function, class 등등의 선언 키워드 들은 모두다 호이스팅이 된다.

 

var의 경우 호이스팅이 되면서 초기 값이 없으면 자동으로 undefined를 초기값으로 메모리를 할당한다. 그래서 var만 호이스팅이 발생하는 것처럼 보이는 것이다.

 

하지만 let, const경우 호이스팅이 되면서 초기 값이 없다면 var처럼 자동으로 초기값을 할당하지 않는다.

 

 

 

var의 경우 버그 발생과 메모리 누수등의 위험이 있기 때문에 var대신 let, const를 사용하는것이 좋다!!!

ES 5에서 나온 'use strict'를 통해 호이스팅을 막는 방법도 있다.

'Dev > JavaScript' 카테고리의 다른 글

함수정의  (0) 2021.04.07
자바스크립트 데이터 타입  (0) 2021.04.06
익명함수 & 즉시 실행 함수 & 내부함수  (0) 2021.04.04
호이스팅  (0) 2021.04.04
CallBack 함수란?  (0) 2021.04.02
Comments