JavaScript Fundamentals : Exercises
π Table of Contents:
π Closures
function outer() {
let count = 0;
return function inner() {
count++;
return count;
};
}
const createCounter = outer();
console.log(createCounter()); // 1
console.log(createCounter()); // 2
✅ inner() still has access to variable count, even though outer() has finished running.
πΉvar declaration in loops inside Closures
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 100);
}
// Prints 3, 3, 3
✅ Use let to avoid this:
for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 100);
}
// Prints 0, 1, 2
π Hoisting
πΉvar Hoisting
console.log(x); // undefined
var x = 5;
Actual Flow:
var x; // Declaration hoisted
console.log(x); // undefined
x = 5; // Assignment happens later
πΉlet and const Hoisting
console.log(y); // ❌ ReferenceError
let y = 10;
πΉFunction Declarations Hoisting
sayHi(); // ✅ Works
function sayHi() {
console.log("Hi!");
}
Hoisted completely — both declaration and definition
πΉFunction Expressions Hoisting
sayHi(); // ❌ TypeError
var sayHi = function () {
console.log("Hi!");
};
Only declaration hoisted - considered as variable
π Scoping
πΉvar, let & const
let z = 4;// Global Scope
function test() {
var x = 3; // Function Scope
if (true) {
var x = 1; // Function Scope
let y = 2; // Block Scope
}
console.log(x); // 1
console.log(y); //❌ ReferenceError
}
console.log(z); // 4
Stick around — I’ll keep adding practical bits here as we roll out more of the JavaScript Series >>>
Comments
Post a Comment
Enter you valuable comments