Hoisting means JavaScript moves variable declarations to the top before running code. Understanding how let and const behave helps avoid errors.
Hoisting with let and const in Javascript
let variableName = value; const constantName = value;
let and const declarations are hoisted but not initialized immediately.
Accessing them before their declaration causes a ReferenceError due to the 'temporal dead zone'.
x is in the temporal dead zone before declaration.console.log(x); let x = 5;
let.console.log(y); const y = 10;
a is declared before use.let a = 3; console.log(a);
This program shows that trying to use let or const variables before they are declared causes errors. After declaration, they work fine.
try { console.log(num); } catch(e) { console.log('Error:', e.message); } let num = 7; console.log(num); try { console.log(pi); } catch(e) { console.log('Error:', e.message); } const pi = 3.14; console.log(pi);
var variables are hoisted and initialized with undefined, so no error occurs if accessed before declaration.
let and const are block-scoped and safer to use to avoid bugs.
let and const are hoisted but not initialized immediately.
Accessing them before declaration causes a ReferenceError due to the temporal dead zone.
Always declare let and const variables before using them.
Practice
let variable before its declaration in JavaScript?Solution
Step 1: Understand hoisting behavior of
Variables declared withletletare hoisted but not initialized immediately.Step 2: Access before declaration causes error
Accessing such variables before declaration triggers a ReferenceError due to the temporal dead zone.Final Answer:
It throws a ReferenceError due to the temporal dead zone. -> Option BQuick Check:
Temporal Dead Zone = ReferenceError [OK]
- Thinking it returns undefined like var
- Assuming it returns null
- Believing it has a default value
Solution
Step 1: Recall correct const declaration syntax
The correct way to declare a constant is usingconstfollowed by the variable name and assignment.Step 2: Identify invalid syntax options
Options B, C, and D use invalid keywords or combinations not supported in JavaScript.Final Answer:
const PI = 3.14; -> Option AQuick Check:
const declaration syntax = const name = value [OK]
- Using 'constant' keyword instead of 'const'
- Combining let or var with const
- Missing assignment during declaration
console.log(x); let x = 10;
Solution
Step 1: Analyze variable declaration and usage
The variablexis declared withletafter theconsole.logstatement.Step 2: Understand temporal dead zone effect
Accessingxbefore its declaration causes a ReferenceError due to the temporal dead zone.Final Answer:
ReferenceError -> Option CQuick Check:
let before declaration = ReferenceError [OK]
- Assuming it prints undefined like var
- Expecting the value 10 immediately
- Thinking it prints null
function test() {
console.log(a);
const a = 5;
}
test();Solution
Step 1: Identify the cause of error
Accessingabefore itsconstdeclaration causes a ReferenceError due to temporal dead zone.Step 2: Fix by reordering declaration
Moving theconst a = 5;line beforeconsole.log(a);fixes the error.Final Answer:
ReferenceError, fix by moving const declaration before console.log -> Option DQuick Check:
Declare const before use to avoid ReferenceError [OK]
- Changing const to var without fixing order
- Ignoring temporal dead zone
- Assuming no error occurs
const a = 1;
{
console.log(a);
let a = 2;
}Solution
Step 1: Understand block scope and hoisting
The block declares a newlet awhich is hoisted but uninitialized inside the block.Step 2: Accessing
Inside the block,abeforelet adeclarationconsole.log(a)tries to access the block-scopedabefore its declaration, causing a ReferenceError due to temporal dead zone.Final Answer:
ReferenceError -> Option AQuick Check:
Block-scoped let shadows outer const causing ReferenceError [OK]
- Assuming it prints outer const value 1
- Expecting it prints 2 before declaration
- Thinking it prints undefined
Ready to prove it?
Pass the test and this pattern moves unknown
