Demystifying Lexical Environment in JavaScript: A Beginner’s Guide

Vrushabh Bayas
3 min readJun 6, 2023

--

As you delve into the world of JavaScript, understanding fundamental concepts like lexical environment is crucial for building a strong foundation in programming. In this blog post, we will demystify the lexical environment and break it down into easy-to-understand terms, enabling beginners to grasp its significance in JavaScript.

What is Lexical Environment? Lexical environment refers to the environment or context in which variables and functions are defined in JavaScript. It determines the accessibility and scope of these identifiers during code execution.

Components of Lexical Environment:

  1. Environment Record: The environment record acts as a record-keeping mechanism that stores all the variables and functions declared within a particular scope. It keeps track of these identifiers and their corresponding values.
  2. Outer Environment Reference: The outer environment reference points to the lexical environment of the parent or outer scope. It enables nested scopes, allowing access to variables and functions defined in higher-level scopes.
https://www.youtube.com/watch?v=4nIWeMAsgVM&t=223s

Simplified Examples:

Example 1: Global Lexical Environment

const greeting = "Hello";

function sayHello(name) {
console.log(greeting + ", " + name);
}

sayHello("John");

In this example, the variable greeting and the function sayHello are part of the global lexical environment. They are accessible throughout the code because they are defined outside any function.

Example 2: Local Lexical Environment

function outer() {
const outerVariable = "I am from outer";

function inner() {
const innerVariable = "I am from inner";
console.log(outerVariable + ", " + innerVariable);
}

inner();
}

outer();

In this example, there are two lexical environments. The outer lexical environment includes the variable outerVariable and the function inner. The inner lexical environment contains the variable innerVariable. The inner lexical environment can access variables from the outer lexical environment, but not vice versa.

Example 3: Nested Lexical Environments

function outer() {
const outerVariable = "I am from outer";

function inner() {
const innerVariable = "I am from inner";
console.log(outerVariable + ", " + innerVariable);

function deepInner() {
const deepInnerVariable = "I am from deep inner";
console.log(outerVariable + ", " + innerVariable + ", " + deepInnerVariable);
}

deepInner();
}

inner();
}

outer();

In this example, there are three nested lexical environments. The deepInner function has access to variables from both the inner and outer lexical environments. However, variables declared in the inner lexical environment are not accessible in the outer lexical environment.

Conclusion: Lexical environment might initially seem complex, but by understanding its basic components and exploring practical examples, we can simplify the concept. Remember, the environment record holds variables and functions, while the outer environment reference allows for nested scopes.

As you continue your JavaScript journey, a solid understanding of the lexical environment will enable you to write cleaner and more effective code.

Keep practicing and exploring the lexical environment, and soon you’ll feel comfortable navigating JavaScript’s scope and context!

References:

--

--

Vrushabh Bayas
Vrushabh Bayas

Written by Vrushabh Bayas

Software engineeer @joshSoftware Pvt Ltd. love to explore new things and teach them to as many people as possible.