TIL. 50 변수 선언 방식
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
는 재선언, 재할당 둘 다 불가능하다. 하지만 객체안의 내용은 메서드를 통해 변경이 가능하다.(불변성 보장 X) -
호이스팅은 키워드에 관계 없이 발생한다. 하지만
var
만 에러가 나지 않는다.let
와const
는 선언 시에 자동으로 초기화가 진행되지 않아 메모리 할당이 안되어 에러가 뜬다.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 (재할당 불가능)
Author And Source
이 문제에 관하여(TIL. 50 변수 선언 방식), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rious275/TIL50저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)