TIL. 50 변수 선언 방식

rious275·2021년 11월 21일
0

JavaScript

목록 보기
15/20

var, let, const의 차이점과 호이스팅에 대한 내용


호이스팅

  • hoisting이란 코드가 실행되기 전 '변수/함수의 선언'이 해당 스코프에서 가장 최상위로 끌어 올려지는 현상이다.(끌어 올리는 행위 자체를 말하는 것이 아니다.)

  • 자바스크립트 엔진은 코드를 실행하기 전 코드의 형상화, 구분 과정을 거친다.(코드가 실행되기 위해 필요한 환경)

  • 위에서 말한 '실행 컨텍스트를 위한 과정'에서 모든 '선언'을 메모리에 저장한다.

  • 실행 전 메모리에 이미 저장하기 때문에, '선언'이 파일의 맨 위로 끌어올려진 것처럼 보이게 한다.

// example(var)

var a = 1을 풀어서 작성해보면,
----------------------------
var a = undefined
a = 1

// example(let)

let a = 1
----------------------------
let a (초기화 되지 않아 사용할 수 없다.)

// example(const)

const a = 1
----------------------------
const a (선언과 할당이 동시에 이루어지지 않아 문법 에러)

var, let, const

  • var는 선언 시 초기화 단계(undefined 할당)가 동시에 진행된다. 호이스팅으로 인해 선언 전에 사용하고, 나중에 선언해도 에러가 나지 않는다.

  • var는 재선언과 재할당이 모두 가능하다.

  • let 재할당이 가능하다.

  • const는 재선언, 재할당 둘 다 불가능하다.

  • 호이스팅은 키워드에 관계 없이 발생한다. 하지만 var만 에러가 나지 않는다.

    • letconst는 선언 시에 자동으로 초기화가 진행되지 않아 메모리 할당이 안되어 에러가 뜬다.
    • const는 선언과 할당을 동시에 진행해야 한다.
// example

var a = 1
var a = 2 (재선언 가능)
a = 3 (재할당 가능)
-----------------------------
let a = 1
let a = 2 (재선언 불가능)
a = 3 (재할당 가능)
-----------------------------
const a = 1
const a = 2 (재선언 불가능)
a = 3 (재할당 불가능)

0개의 댓글