Skip to content

Instantly share code, notes, and snippets.

@nurmdrafi
Last active January 28, 2022 15:35
Show Gist options
  • Save nurmdrafi/828b8441528b2b5d88bfb2cccd452cb9 to your computer and use it in GitHub Desktop.
Save nurmdrafi/828b8441528b2b5d88bfb2cccd452cb9 to your computer and use it in GitHub Desktop.
Different output of var and let

Different output of var and let

For loop, let i and setTimeout - how exactly does it work? 🎯🎯🎯

Function Scope

(function autoexecute() {
    let x = 1;
})();

console.log(x);
// Uncaught ReferenceError: x is not defined
function doSomething(){
  console.log(x);
  var x = 1;
}

doSomething(); // undefined
function doSomething(){
  console.log(x);
  let x = 1;
}

doSomething();
// Uncaught ReferenceError: x is not defined
function doSomething(){
  var x = 1
  var x = 2;
  console.log(x); // 2
}

doSomething();
function doSomething(){
  let x = 1
  let x = 2;
}
// Uncaught SyntaxError: Identifier 'x' has already been declared

Block Scope

let x = 1;
{ 
  let x = 2;
}
console.log(x); // 1
var x = 1;
{ 
  var x = 2;
}
console.log(x); // 2
// Sloppy Mode
x = 20;
if (true){
  y = 10;
  console.log(`y = ${y}`); // y = 10
  var y;
}
console.log(`x = ${x}`) // x = 20
var x;
console.log(`y = ${y}`); // y = 10
var LANGUAGE = "Java";
var language = "JavaScript";

function getLanguage() {
  if (!language) {
    var language = LANGUAGE;
  }
  return language;
}

console.log(`I love ${getLanguage()}`); // I love Java
let LANGUAGE = "Java";
let language = "JavaScript";

function getLanguage() {
  if (!language) {
    let language = LANGUAGE;
  }
  return language;
}

console.log(`I love ${getLanguage()}`); // I love JavaScript
let n = 5;
for(var i = 1; i <= n; i++){
  if(i == '3'){
    continue
  }
  else{
    console.log(i) // 1, 2, 4, 5
  }
}
let count = 0;
(function immediate() {
  if (count === 0) {
    let count = 1; // let and const have [Block Scope]
    console.log(count); // returns 1 [Block Scope]
  }
  console.log(count); // returns 0 [Global Scope]
})();
let count = 0;
(function immediate() {
  if (count === 0) { 
    var count = 1; 
    console.log(count); // NO OUTPUT
  }
    console.log(count); // undefined

})();
console.log(count) // 0
let count = 0;
(function immediate() {
  if (count === undefined) { 
    var count = 1; 
    console.log(count); // 1
  }
    console.log(count); // 1

})();
console.log(count) // 0

SetTimeout

(function run(){
    for(var i=0; i<5; i++){
        setTimeout(function logValue(){
            console.log(i); // 5, 5 times
        }, 100);
    }
})();
(function run(){
  for(let i=0; i<5; i++){
    setTimeout(function log(){
      console.log(i); // 0 1 2 3 4
    }, 100);
  }
})()
for (var i = 0; i < 3; i++){
  setTimeout(function(){
    console.log(i);
  }, i * 1000)
}
for (var i = 0; i < 3; i++){
  setTimeout(function(){
    console.log(i); // 3 3 3 in 1 2 3 sec respectively
  }, i * 1000)
}
for (let i = 0; i < 3; i++){
  setTimeout(function(){
    console.log(i); // 0 1 2 in 1 2 3 sec respectively
  }, i * 1000)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment