JS 001: Variable Declaration with let (Temporary Dead Zone)
by Nico D
JavaScript
var version = 0;
var exampleNumber = 1;
const log = function(message) {
if (version < exampleNumber) {
version = exampleNumber;
const title = 'EXAMPLE ' + exampleNumber + ': ';
document.write("<br/>" + title + "<br/>");
}
document.write(message + "<br/>");
};
//////////////////////
exampleNumber = 1;
try {
log("before => " + (typeof value1));
if (true) {
log("before but inside block => " + (typeof value1));
var value1 = "blue";
log("after but inside block => " + (typeof value1));
}
log("after => " + (typeof value1));
} catch (e) {
log("ERROR => " + e.message);
}
///////////////////////
exampleNumber = 2;
log("before => " + (typeof value2));
if (true) {
let value2 = "blue";
log("after but inside block => " + (typeof value2));
}
log("after => " + (typeof value2));
//////////////////////
exampleNumber = 3;
try {
log("before => " + (typeof value3));
if (true) {
log("before but inside block => " + (typeof value3));
let value3 = "blue";
log("after but inside block => " + (typeof value3));
}
log("after => " + (typeof value3));
} catch (e) {
log("ERROR => " + e.message);
}
///////////////////////
exampleNumber = 4;
log("before => " + (typeof value4));
if (true) {
const value4 = "blue";
log("after but inside block => " + (typeof value4));
}
log("after => " + (typeof value4));
//////////////////////
exampleNumber = 5;
try {
log("before => " + (typeof value5));
if (true) {
log("before but inside block => " + (typeof value5));
const value5 = "blue";
log("after but inside block => " + (typeof value5));
}
log("after => " + (typeof value5));
} catch (e) {
log("ERROR => " + e.message);
}