ReferenceError: can't access lexical declaration`X' before initialization

Relawan kami belum menerjemahkan artikel ini ke bahasa Bahasa Indonesia. Bergabunglah dan bantu kami menyelesaikannya!
Anda juga dapat membaca artikel ini dalam English (US).

Message

ReferenceError: Use before delaration (Edge)
ReferenceError: can't access lexical declaration `X' before initialization (Firefox)
ReferenceError: 'x' is not defined (Chrome)

Error type

ReferenceError

What went wrong?

A lexical variable was accessed before it was initialized. This happens within any block statement, when let or const declarations are accessed before they are defined.

Examples

Invalid cases

In this case, the variable "foo" is redeclared in the block statement using let.

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

Valid cases

To change "foo" inside the if statement, you need to remove the let that causes the redeclaration.

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

See also

Tag Dokumen dan Kontributor

Kontributor untuk laman ini: PatrickKettner, fscholz, johnjago, jonathanKingston
Terakhir diperbarui oleh: PatrickKettner,