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);
}