๐ Scenario: Imagine you are organizing a small event and you want to keep track of the number of guests and the event name. You will learn how JavaScript handles variable declarations with let and const before they are used in the code, a concept called hoisting.
๐ฏ Goal: You will create variables using let and const, try to access them before declaration to see what happens, and then correctly use them after declaration.
๐ What You'll Learn
Create variables using let and const with exact names and values
Add a helper variable to control access timing
Use a try...catch block to safely test accessing variables before declaration
Print the final values of the variables after declaration
๐ก Why This Matters
๐ Real World
Understanding hoisting helps avoid bugs when using variables in JavaScript, especially in larger programs where order of code matters.
๐ผ Career
Many programming jobs require knowledge of JavaScript variable behavior to write clean, error-free code and debug issues efficiently.
Progress0 / 4 steps
1
Add a control variable for access timing
Create a variable called accessBeforeDeclaration using let and set it to true. This will help us decide when to try accessing variables before they are declared.
Javascript
Hint
Use let accessBeforeDeclaration = true;
2
Try accessing variables before declaration safely
Write a try...catch block that runs only if accessBeforeDeclaration is true. Inside the try, attempt to print guestCount and eventName before they are declared. In the catch, print the error messages.
Javascript
Hint
Use if (accessBeforeDeclaration) { try { console.log(guestCount); } catch (error) { console.log(error.message); } } and similarly for eventName.
3
Create variables with let and const
Now create a variable called guestCount using let and set it to 50. Also create a constant called eventName using const and set it to 'Birthday Party'.
Javascript
Hint
Use let guestCount = 50; and const eventName = 'Birthday Party';
4
Print variables after declaration
Print the values of guestCount and eventName after their declarations using console.log.
Javascript
Hint
Use console.log(guestCount); and console.log(eventName); after the if block.
Practice
(1/5)
1. What happens if you try to access a let variable before its declaration in JavaScript?
easy
A. It returns the variable's default value.
B. It throws a ReferenceError due to the temporal dead zone.
C. It returns null.
D. It returns undefined.
Solution
Step 1: Understand hoisting behavior of let
Variables declared with let are 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 B
Quick Check:
Temporal Dead Zone = ReferenceError [OK]
Hint: Accessing before declaration with let/const causes ReferenceError [OK]
Common Mistakes:
Thinking it returns undefined like var
Assuming it returns null
Believing it has a default value
2. Which of the following is the correct syntax to declare a constant variable in JavaScript?
easy
A. const PI = 3.14;
B. let const PI = 3.14;
C. constant PI = 3.14;
D. var const PI = 3.14;
Solution
Step 1: Recall correct const declaration syntax
The correct way to declare a constant is using const followed 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 A
Quick Check:
const declaration syntax = const name = value [OK]
Hint: Use 'const name = value;' to declare constants [OK]
Common Mistakes:
Using 'constant' keyword instead of 'const'
Combining let or var with const
Missing assignment during declaration
3. What will be the output of the following code?
console.log(x);
let x = 10;
medium
A. 10
B. undefined
C. ReferenceError
D. null
Solution
Step 1: Analyze variable declaration and usage
The variable x is declared with let after the console.log statement.
Step 2: Understand temporal dead zone effect
Accessing x before its declaration causes a ReferenceError due to the temporal dead zone.
Final Answer:
ReferenceError -> Option C
Quick Check:
let before declaration = ReferenceError [OK]
Hint: Accessing let before declaration throws ReferenceError [OK]
Common Mistakes:
Assuming it prints undefined like var
Expecting the value 10 immediately
Thinking it prints null
4. Identify the error in the following code and fix it:
function test() {
console.log(a);
const a = 5;
}
test();
medium
A. No error, outputs 5
B. TypeError, fix by initializing a with null
C. SyntaxError, fix by changing const to var
D. ReferenceError, fix by moving const declaration before console.log
Solution
Step 1: Identify the cause of error
Accessing a before its const declaration causes a ReferenceError due to temporal dead zone.
Step 2: Fix by reordering declaration
Moving the const a = 5; line before console.log(a); fixes the error.
Final Answer:
ReferenceError, fix by moving const declaration before console.log -> Option D
Quick Check:
Declare const before use to avoid ReferenceError [OK]
Hint: Declare const before use to avoid ReferenceError [OK]
Common Mistakes:
Changing const to var without fixing order
Ignoring temporal dead zone
Assuming no error occurs
5. Consider the code below. What will be the output and why?
const a = 1;
{
console.log(a);
let a = 2;
}
hard
A. ReferenceError
B. 2
C. 1
D. undefined
Solution
Step 1: Understand block scope and hoisting
The block declares a new let a which is hoisted but uninitialized inside the block.
Step 2: Accessing a before let a declaration
Inside the block, console.log(a) tries to access the block-scoped a before its declaration, causing a ReferenceError due to temporal dead zone.
Final Answer:
ReferenceError -> Option A
Quick Check:
Block-scoped let shadows outer const causing ReferenceError [OK]
Hint: Block let shadows outer const; accessing before declaration errors [OK]
Common Mistakes:
Assuming it prints outer const value 1
Expecting it prints 2 before declaration
Thinking it prints undefined
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.