JavaScript building block let, var, and const with interview question

Umar Farooque Khan
7 min readJun 7, 2023

--

JavaScript

let, const and var keyword

let, var, and const are keywords used for variable declaration in JavaScript. Here's an explanation of each:

  1. let: The let keyword was introduced in ECMAScript 6 (ES6) as a way to declare block-scoped variables. Variables declared with let have block scope, meaning they are limited to the block in which they are defined (enclosed within curly braces). let variables are not hoisted to the top of their scope and can be reassigned within their scope. They cannot be re declared within the same block.

Example:

let x = 10;
if (true) {
let x = 20; // Different variable, block-scoped
console.log(x); // Output: 20
}
console.log(x); // Output: 10

2. var: The var keyword is the traditional way to declare variables in JavaScript. Variables declared with var have function scope or global scope, depending on where they are declared. var variables are hoisted to the top of their scope, meaning they can be accessed before they are declared (although their initial value will be undefined). var variables can be re declared within the same function or global scope.

Example:

3. const: The const keyword is used to declare variables that have block scope and are read-only, meaning their value cannot be re-assigned after initialisation. const variables must be assigned a value at the time of declaration and cannot be left uninitialised. While const variables themselves are read-only, if they are objects or arrays, their properties or elements can still be modified.

Example:

Example with all three:

Why let and const were introduced:

The introduction of let and const in JavaScript was driven by the need to address certain limitations and improve upon the behaviour of var. Here are some reasons why let and const were introduced:

  1. Block scope: let and const allow for the declaration of variables with block scope, meaning they are limited to the block in which they are defined (enclosed within curly braces). This provides better control and isolation of variables within specific blocks, such as loops, conditionals, or function scopes. In contrast, var has function scope or global scope, which can lead to unintended variable access or modification outside of the intended scope.
  2. Variable hoisting: Variables declared with let and const are not hoisted to the top of their scope. Hoisting is a behaviour in JavaScript where variable declarations are moved to the top of their containing scope. This can sometimes lead to confusion and bugs when variables are accessed before they are declared. By contrast, let and const enforce a more predictable behaviour, as they are not accessible until they are declared.
  3. Reassignment and re declaration: Variables declared with let can be reassigned within their scope, allowing for variable values to be changed. On the other hand, const variables are read-only and cannot be reassigned after initialisation. This provides a way to create variables with fixed values. In contrast, var allows for both reassignment and re declaration within the same scope, which can lead to unintended bugs and variable shadowing.
  4. Encouraging better coding practices: The introduction of let and const encourages developers to adopt block scoping and reduces the likelihood of variable naming conflicts. By providing block scope and read-only variables, let and const promote better coding practices and help improve code readability and maintainability.

Overall, the addition of let and const to JavaScript provides more fine-grained control over variable scoping and mutability. They offer improvements over the behaviour of var, addressing some of the common issues and limitations associated with it. While var still has its uses, especially in scenarios where function scope or hoisting behaviour is needed, let and const provide more predictable and robust variable declaration mechanisms.

When to use let, const and var:

Choosing between let, const, and var depends on the specific requirements and characteristics of your code. Here are some guidelines to help you decide when to use each of them:

  1. Use let when:
  • You need to declare a variable with block scope, limited to the block in which it is defined.
  • You want the variable to be mutable and allow for reassignment within its scope.
  • Variable hoisting is not desired or could lead to confusion.

Example:

2. Use const when:

  • You need to declare a variable with block scope.
  • The variable should have a fixed value and should not be reassigned after initialisation.
  • You want to prevent accidental reassignment and enforce immutability.

Example:

3. Use var when:

  • You need to declare a variable with function scope or global scope (outside of any function).
  • You want the variable to be accessible and modifiable throughout the function or globally.
  • You require hoisting behaviour, where variables are moved to the top of their scope.

Example:

It’s worth noting that modern JavaScript development practices tend to favour using let and const over var. let and const provide more predictable scoping behaviour, help catch potential bugs, and promote better coding practices. However, there are still scenarios where var may be useful, especially when maintaining compatibility with older JavaScript code or when you specifically need its hoisting behaviour or wider scope.

Remember, the choice between let, const, and var ultimately depends on the specific needs and requirements of your code, including the desired scoping, mutability, and hoisting behaviour.

Memory allocation in terms of let, const and var:

In terms of memory, let, var, and const have some differences in how they allocate and store variables:

  1. let Memory Allocation:
  • When a variable is declared using let, memory is allocated during the variable's initialisation within the block scope where it is defined.
  • The memory allocated to let variables is released when the block scope is exited or when the variable goes out of scope, allowing for efficient memory management.
  • Each instance of a let variable within a block scope has its own memory allocation, ensuring separate storage and values for each variable instance.

2.var Memory Allocation:

  • Variables declared with var are allocated memory during the creation phase of the execution context (global or function scope).
  • The memory allocated to var variables persists throughout the scope of the function or globally, regardless of the block scope.
  • var variables are hoisted to the top of their scope, meaning memory is allocated for them even before their actual declaration within the code.

3. const Memory Allocation:

  • Similar to let, memory is allocated to const variables during their initialisation within the block scope.
  • The memory allocated to const variables is also released when the block scope is exited or when the variable goes out of scope.
  • However, unlike let, const variables are read-only, meaning their values cannot be changed after initialisation. The memory allocated to a const variable remains constant throughout its lifetime.

Here are some interview questions related to let, const, and var in JavaScript:

  1. Question: What is the temporal dead zone (TDZ) in JavaScript, and how does it relate to let and const?
  2. Question: How does variable hoisting differ between var, let, and const?
  3. Question: Can you provide an example where using var instead of let or const can lead to unexpected behaviour?
  4. Question: What are the benefits of using const for declaring variables in JavaScript?
  5. Question: Explain the concept of variable shadowing and how it can occur with var, let, and const.
  6. Question: How does the scoping behaviour of let and const differ from var in loops, such as for or while loops?
  7. Question: What happens if you try to re declare a variable using let or const within the same scope?
  8. Question: What is the difference in behaviour between let and const when it comes to variable reassignment?
  9. Question: Can you explain the concept of block scope and how it applies to variables declared with let and const?
  10. Question: How does the choice between let, const, and var impact the memory usage and allocation in JavaScript?

--

--

Umar Farooque Khan
Umar Farooque Khan

Written by Umar Farooque Khan

Experienced software developer with a passion for clean code and problem-solving. Full-stack expertise in web development. Lifelong learner and team player.

No responses yet