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

ReferenceError

무엇이 잘못 되었을까요?

변수가 초기화 되기 전에 엑세스가 되어버립니다. 이 문제는 let 또는 const 선언이 정의 되기 전에 엑세스되는 모든 block 문에서 발생합니다.

Examples

잘못된 경우

이 경우에 변수 "foo"는 let 을 사용하여 block 문에서 다시 선언됩니다.

function test() {
  let foo = 33;
  if (true) {
    let foo = (foo + 55); 
    // ReferenceError: can't access lexical 
    // declaration `foo' before initialization
  }
}
test();

올바른 경우

if 문에서 "foo"를 변경하려면 재 선언을 발생시키는 let 을 제거해야합니다.

function test(){
   let foo = 33;
   if (true) {
      foo = (foo + 55);
   }
}
test();

그밖에 볼 것

문서 태그 및 공헌자

이 페이지의 공헌자: SSJ-unclear
최종 변경자: SSJ-unclear,