Skip to content Skip to sidebar Skip to footer

Function Declaration - Function Expression - Scope

In javascript, What is the difference between function declaration and function expression in terms of scope? function declaration means we are polluting the global space. Is it th

Solution 1:

Both are equivalent in terms of scope. A function declared inside another function will not be global. The difference is that you can use a declared function at any time (because it's hoisted before any code is run), a function assigned to a variable as an expression only after you have assigned it.

(function () {

    bar(); // worksfunctionbar() { }  // is not globalfoo();  // doesn't workvar foo = function () { };

})();

Solution 2:

As far as polluting the enclosing scope goes, both are equivalent. Note that it is not necessarily the global scope - it is the scope in which the function is declared (local functions are permitted within other functions). In your example, both methods introduce a variable (function object) named sum into the local scope.

Post a Comment for "Function Declaration - Function Expression - Scope"