The JavaScript exception "can't access lexical declaration `
variable
' before initialization" occurs when 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.
ReferenceError: Use before delaration (Edge) ReferenceError: can't access lexical declaration `X' before initialization (Firefox) ReferenceError: 'x' is not defined (Chrome)
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.
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();
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();