For loop, let i and setTimeout - how exactly does it work? 🎯🎯🎯
(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
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
(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)
}