[SOLVED] javascript scope of function declarations

Issue

The var keyword in javascript causes a variable to be stored in the local scope. Without var variables belong to the global scope. What about functions? It’s clear what happens when functions are declared like variables

var foo = function() {...}

but what scope does

function foo() {...} 

belong to?

EDIT:
I realized I didn’t ask quite the right question so as a follow up. In the outer most nesting is there a difference between the above two declarations and the following declaration?

foo = function() {...}

Solution

It belongs to the current scope, always. For example:

// global scope

// foo is a global function
function foo() {

    // bar is local to foo
    function bar() {

    }

}

Regarding your second question, this:

foo = function() {...}

is an anonymous function expression assigned to a global variable (unless you’re running is strict mode, then foo would be undefined). The difference between that and function foo() {} is that the latter is a function declaration (versus a variable declaration, which is assigned an anonymous function expression).

You might be interested in this excellent article about function declarations and function expressions: Named function expressions demystified.

Answered By – bfavaretto

Answer Checked By – Clifford M. (BugsFixing Volunteer)

Leave a Reply

Your email address will not be published.