let 또는 const로 선언된 변수 호이스팅
var로 선언된 변수는 호이스팅 중에 예상대로 동작하지만, let 또는 const로 선언된 변수는 Exhibition 다른 동작.
모든 선언 호이스팅
모두 JavaScript 선언(var, let, const, function, function*, class)은 호이스팅을 거치므로 해당 범위 내 어디에서나 인식할 수 있습니다.
초기화 차이
그러나 var/function/function*과 let/const/class 선언의 차이점은 초기화에 있습니다. Var 선언은 범위 시작 시 바인딩이 생성되는 순간부터 정의되지 않은 상태로 초기화됩니다. 대조적으로, let/const/class 선언은 해당 명령문이 평가될 때까지 초기화되지 않은 상태로 유지됩니다.
초기화되지 않은 변수에 대한 임시 데드 존
이 초기화되지 않은 상태는 "시간적 데드 존"을 생성합니다. " 여기서 초기화 전에 변수에 액세스하면 ReferenceError.
예:
x = y = "global"; (function() { x; // undefined y; // Reference error: y is not defined var x = "local"; let y = "local"; }());
호이스팅의 let 대 const
Let과 const는 호이스팅 측면에서 동일하게 작동합니다. 차이점은 선언 시 항상 상수에 값을 할당해야 한다는 것입니다.
결론
let 또는 const로 선언된 변수는 호이스팅되지만 내부에서 초기화되지 않은 상태로 유지됩니다. 선언문이 처리될 때까지 일시적인 데드존입니다. 조기에 액세스하면 ReferenceError가 발생합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3