'createCloseButton' was used before it was defined
324 table.appendChild(head);
325 var body = createFeatureTableBody(typeString, setString);
326 table.appendChild(body);
327 var closeButton = createCloseButton();328 closeButton.style.position = "absolute";
329 closeButton.style.right = "0px";
330 closeButton.style.top = "0px";
Description
It is recommended to use a variable only after it is defined as it might produce errors at runtime.
In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.
In ES6, block-level bindings (let
and const
) introduce a "temporal dead zone" where a ReferenceError
will be thrown with any attempt to access the variable before its declaration.
Bad Practice
alert(a);
var a = 10;
f();
function f() {}
function g() {
return b;
}
var b = 1;
{
alert(c);
let c = 1;
}
Recommended
var a;
a = 10;
alert(a);
function f() {}
f(1);
var b = 1;
function g() {
return b;
}
{
let c;
c++;
}