DEV Community

Cover image for Understanding Scope and Scope Chain in JavaScript.
Samuel Ojerinde
Samuel Ojerinde

Posted on

Understanding Scope and Scope Chain in JavaScript.

Introduction

JavaScript is a popular programming language used to make websites interactive. When learning JavaScript, understanding "scope" and "scope chain" is very important. These concepts help you know where your variables and functions can be accessed or used. In this article, I'll explain what scope and scope chain are with simple examples.

What is Scope?

Scope in JavaScript refers to the area or environment where a variable or function is accessible. Think of it as a box or boundary within your code. There are mainly two types of scope in JavaScript: global scope and local scope.

Global Scope:

Variables or functions declared outside any function are in the global scope. They can be accessed from anywhere in the code.

const name = "Samuel";

function greet() {
  console.log("Hello, " + name);
}
greet(); // Outputs: Hello, Samuel
console.log(name); // Outputs: Samuel
Enter fullscreen mode Exit fullscreen mode

Here, the variable "name" is in the global scope, so it can be used inside the greet function and outside of it.

Local Scope:

Variables or functions declared inside a function are in the local scope. They can only be accessed within that function.

function greet() {
  const name = "Ojerinde";
  console.log("Hello, " + name);
}
greet(); // Outputs: Hello, Ojerinde
console.log(name); // Error: name is not defined
Enter fullscreen mode Exit fullscreen mode

In this example, name is a local variable inside the greet function. Trying to access it outside the function results in an error.

Keep in mind that variables declared anywhere with the var keyword will be available in the global scope. This is why it is recommended that you declare your variable with either let or const keyword to avoid unwanted manipulations of variables.

What is Scope Chain?

The scope chain in JavaScript is the order in which the JavaScript engine looks for variables. When you try to use a variable, JavaScript first looks in the local scope. If it doesn't find it there, it moves up to the next outer scope and keeps doing this until it reaches the global scope.

Example of Scope Chain:

const globalVariable = "I am global";

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

  function innerFunction() {
    const innerVariable = "I am inner";
    console.log(innerVariable); // Outputs: I am inner
    console.log(outerVariable); // Outputs: I am outer
    console.log(globalVariable); // Outputs: I am global
  }

  innerFunction();
  console.log(innerVariable ); // Error: innerVariable is not defined
}

outerFunction();
console.log(outerVariable); // Error: outerVariable is not defined
Enter fullscreen mode Exit fullscreen mode

In this example, when innerFunction tries to access innerVariable , it finds it in its own local scope. For outerVariable, it goes one level up to outerFunction's scope. Finally, for globalVariable, it goes up again to the global scope. If a variable isn't found at any level, it results in an error.``

Conclusion

Understanding scope and scope chain is important for writing effective JavaScript code. Scope helps you manage where variables and functions can be accessed, and the scope chain helps the JavaScript engine find these variables. By knowing these concepts, you can avoid errors and write cleaner, more efficient code. Remember, practice makes perfect, so keep experimenting with these ideas in your own code!

Top comments (0)