[Node.js 강의-3] 호이스팅

codeing999·2022년 10월 12일
0

JavaScript

목록 보기
16/24

1-9강.
• 호이스팅 (Hoisting)
• 사전적 정의는 끌어올리다.
• repl 환경 들어가서 .editor 치고 여러줄 쓰고 ctrl+d 누르면 쓴 코드들 실행함.

console.log(name); // Print: undefined
var name = '강승현';

위 코드를 보면 선언되지 않은 변수를 미리 참조했기 때문에 첫번째줄에서 에러가 나야하는데
에러는 나지않고 undefined가 출력됨.
안되야 되는데 됨. 이래서 var를 사용하면 안된다.
이 원인이 Hoisting 때문인데 var나 function 키워드로 선언하면 아래와 같은 코드로 내부적으로 변환이 되서 동작한다고 보면 됨.

var name;
console.log(name); // Print: undefined
name = '강승현';

이렇게 끌어올려진다고 해서 호이스팅.
근데 let, const, class 도 모두 호이스팅이 일어나는데 문제가 안되는 이유는
자바스크립트 내부에 TDZ라는 영역이 존재하여 TDZ 영역에 존재하는 변수는 접근이 불가능한데 실제 변수 선언이 실행되는 구문이 실행되기 전에는 const, let, lass로 선언되 이름은 모두 tDZ에 존재하여 참조에러를 발생시킴.

호이스팅과 TDZ 관련링크
https://dmitripavlutin.com/javascript-variables-and-temporal-dead-zone/
번역본 : https://ui.toast.com/weekly-pick/ko_20191014
https://evan-moon.github.io/2019/06/18/javascript-let-const/

호이스팅 문제는 var만 쓰지않으면 괜찮게 수정이 되었다.

profile
코딩 공부 ing..

0개의 댓글