Open utterances-bot opened 1 year ago
여기서 궁금한 점이 있어요.
- 브라우저 : Uncaught ReferenceError: b is not defined
- Node.js : Uncaught ReferenceError: Cannot access 'b' before initialization
위처럼, 환경에 따라 뱉는 에러가 다른 것 같은데 혹시 이유를 아시나요?
let과 const가 호이스팅이 되지 않는다고 하셨는데, MDN 문서를 보면 호이스팅이 된다고 나와 있습니다. 다만 undefined로 초기화하지 않는다고 나와 있습니다.
@Jinyong-Lee0 이 글은 호이스팅이 발생하지 않는것처럼 보이는 이유를 TDZ와 연관지어 알아본 글입니다. 글을 다시 읽어주시면 감사하겠습니다.
“정확히는 const, let이 호이스팅이 발생하지 않는 것이 아니다. 선언문을 통해 모든 식별자(변수, 함수, 클래스 등)는 호이스팅된다. 그러나 var과 다르게 초기화되기 전까지 TDZ에 머물러있기 때문에 호이스팅이 발생하지 않는 것처럼 보이며 참조가 불가능하다.”
[JS] 호이스팅과 TDZ 이해하기 | INGG.
js 호이스팅(Hoisting)이란 변수나 함수를 선언했을 때 코드 범위(scope) 내의 최상단으로 끌어올려지는 것처럼 보이는 현상이다. 흔히 var 는 호이스팅이 발생하며, const 와 let 은 발생하지 않는다고 하는데, 그 이유는 무엇일까? 그리고 const 와 let…
https://ingg.dev/hoisting/