호이스팅 const var let
호이스팅
호이스팅은 javascript에서 사용 되는 모든 선언을 함수들이 실행되기전에 한번 최상단으로 올려서 확인하는 과정이다. 이렇게 올려서 확인하였을때 초기화도 같이 진행되는데 값은 undefined로 된다.
const
const는 말그대로 상수 변하지 않는 값을 만드는 것이다. const로 선언을 한 값에 다른 값을 넣으려고 한다면 바로 에러가 나면서 넣을 수 없다는 메시지가 나오게 된다.
var
var의 특징은 특이하게도 함수레벨의 스코프를 가지고 있는 것이다.
보통 변수 선언을 할때 전역변수와 지역변수등을 나눌때 블록 레벨로 나누지만 var는 함수 단위로 나누며 for나 if에서 사용한 변수조차도 전역변수로 사용이 된다. 그리고 변수를 선언할때 var 키워드는 생략이 된다.
그리고 중복 선언이 가능하며 호이스팅 당한다.
2. let
let은 es6에서 추가된 내용이며 var에서 이상하다고 생각된 부분들이 많이 개선된 내용이다 그중 중요한 내용은 let은 var와는 다르게 블록 수준의 스코프를 사용 하고 있다. 따라서 블록 내부에서 선언한 변수는 모두 지역변수로 취급된다. 때문에 블록 내부에서 선언한 변수들을 참고할 수가 없다.
그리고 중복 선언이 불가능 하다.
호이스팅을 당하지만 TDZ라는 개념이 있어서 선언전에 변수를 사용하려고 한다면 초기화 전에는 접근할수 없다는 에러가 나오게된다.
TDZ 간단 설명 Temporary Dead Zone
var는 선언과 동시에 초기화가 이루어진다. 즉, 선언과 동시에 undefined가 할당된다.
그러나 let과 const는 다르다. 선언만 될뿐, 초기화가 이루어지지 않는다. 바로 이단계에서 TDZ에 들어가게 되는 것이다. 즉, 선언은 되어있지만, 초기화가 되지 않아 이를 위한 자리가 메모리에 준비되어 있지 않은 상태라는 것이다.
정리
- 호이스팅은 변수의 선언을 최상단에 끌어올린다는 뜻이다.
- var let const는 모두 호이스팅 된다.
- let 선언과 동시에 TDZ에 들어가서 초기화가 필요한 별도의 상태로 관리된다.
- const 는 선언과 동시에 초기화, 할당까지 이루어진다.
- let을 사용하는 것을 기본으로 변하지 않는 값을 선언할때는 const를 사용하도록 하자 var는 아주 특별한 경우나 legacy 코드를 리팩토링 할 시간적인 여유가 없을때만 사용하도록 하자.
'ComputerScience' 카테고리의 다른 글
[3분 CS지식] Immutable과 Mutable (0) | 2022.06.08 |
---|---|
[3분 CS지식] CORS (0) | 2022.05.18 |
[10분 CS지식] 웹 브라우저의 요청 흐름 (0) | 2022.04.24 |
[10분 CS지식] URI, URL, URN (0) | 2022.04.24 |
[3분 CS지식] PORT (0) | 2022.04.24 |