Javascript Scope

by horhey

JavaScript

// global scope
var x = 9;

function fn1() {
    // local scope
    var x = 5;
    var y = 6;
};
 
console.log(x); // 9

try {   
    console.log(y); // ReferenceError: Can't find variable: y
} catch(e) {
    console.log(e);
}

// bad function
function fn2() {
    x = 5;
};

fn2();
 
console.log(x); // 5

// closed scope
function outer() {
    var x = 77;
    function inner() {
        console.log(x); // 77
    }
    inner();
}

outer();

// more complex example
(function() {
    var baz = 1;
    var bim = function() {
        console.log( baz );
    };
    bar = function() {
        console.log( baz );
    };
})();

bar(); // 1

try {   
    console.log(baz); // ReferenceError: Can't find variable: baz
} catch(e) {
    console.log(e);
}

try {   
    bim(); // ReferenceError: Can't find variable: bim 
} catch(e) {
    console.log(e);
}