Search code examples
javascriptscope-chain

Scope Chain in Javascript


I've reading scope chain in Javascript but it didn't make any sense to me, could any one tell me what is scope chain and how it works with a graphic or something even an idiot can understand. I googled it but I didn't find something comprehensible :(


Solution

  • To understand the scope chain you must know how closures work.

    A closure is formed when you nest functions, inner functions can refer to the variables present in their outer enclosing functions even after their parent functions have already executed.

    JavaScript resolves identifiers within a particular context by traversing up the scope chain, moving from locally to globally.

    Consider this example with three nested functions:

    var currentScope = 0; // global scope
    (function () {
      var currentScope = 1, one = 'scope1';
      alert(currentScope);
      (function () {
        var currentScope = 2, two = 'scope2';
        alert(currentScope);
        (function () {
          var currentScope = 3, three = 'scope3';
          alert(currentScope);
          alert(one + two + three); // climb up the scope chain to get one and two
        }());
      }());
    }());
    

    Recommended reads: