ReferenceError: can't access lexical declaration`X' before initialization
Message
ReferenceError: can't access lexical declaration `X' before initialization (Firefox) ReferenceError: 'x' is not defined (Chrome)
Error type
무엇이 잘못 되었을까요?
변수가 초기화 되기 전에 엑세스가 되어버립니다. 이 문제는 let 또는 const 선언이 정의 되기 전에 엑세스되는 모든 block 문에서 발생합니다.
Examples
잘못된 경우
이 경우에 변수 "foo"는 let
을 사용하여 block 문에서 다시 선언됩니다.
js
function test() {
let foo = 33;
if (true) {
let foo = foo + 55;
// ReferenceError: can't access lexical
// declaration `foo' before initialization
}
}
test();
올바른 경우
if 문에서 "foo"를 변경하려면 재 선언을 발생시키는 let
을 제거해야합니다.
js
function test() {
let foo = 33;
if (true) {
foo = foo + 55;
}
}
test();