-
var, let, const의 차이점Programming/javascript 2022. 2. 10. 14:43
매우 기초적인 것이고 이미 이전에도 여러번 본 것이지만, 그래도 정리를 해두는게 확실히 기억에 남으니 기록을 남긴다
•변수 선언 방식의 차이
var-변수재선언, 변수재할당 가능(mutable), 변수 선언과 초기화가 한번에 진행
let-변수재할당 가능(mutable), 변수 선언과 초기화가 따로 진행
const-모두 불가능, 초기 선언만 유효(immutable)
•변수 호이스팅(1) 방식의 차이
호이스팅(hoisting): javascript에서 인터프리터가 변수와 함수의 선언 전에 미리 메모리(Memory) 공간을 할당 하는 것을 말한다.(출처:MDN 용어 사전, https://developer.mozilla.org/ko/docs/Glossary/Hoisting)
var - 변수의 선언과 동시에 초기화가 진행된다.(변수 호이스팅 시 변수를 초기화 한다.)
let / const -변수의 선언과 초기화가 따로 진행된다.(변수 호이스팅 시 변수를 초기화 하지 않는다, TDZ(2)와 관련이 있다. )
*(1)호이스팅은 변수를 선언과 초기화를 분리한 후 선언부를 코드의 최상단으로 옮기는데, 이로인해 선언 코드보다 사용하는 코드가 로직에 먼저 등장 할 순 있지만, 선언과 초기화를 한다면 선언 코드까지 실행이 되어야 변수에 값이 할당된 상태라는 것을 유념해야한다.
*(2)Temporal Dead Zone;TDZ 이란, 직역하면 시간상/일시적 사각 지대로써 var는 선언과 메모리에 undefied값이 할당되어 초기화가 진행되지만, let/const는 선언 후 메모리에 값이 할당 되지 않기 때문에 호출이 불가능하다. 그렇기 때문에 선언 후 초기화가 되기 전까지의 시점을 Temporal Dead Zone이라고 한다.(쉽게 얘기 하자면, 선언 후 초기화 직전까지가 시간상 사각지대라고 생각하면 된다.)
'Programming > javascript' 카테고리의 다른 글
Generator에 대하여 (0) 2022.04.24 Closure에 대하여 (0) 2022.02.10 Execution Context에 대하여 (0) 2022.02.10 일반 함수와 생성자 함수의 차이점 (0) 2022.02.10 function과 arrow function의 차이점 (0) 2022.02.10