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() {...}
It belongs to the current scope, always. For example:
Regarding your second question, this:
is an anonymous function expression assigned to a global variable (unless you’re running is strict mode, then
foowould be undefined). The difference between that andfunction 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.