TL;DR: Variables not declared using var are stored outside the current scope, most likely in the global scope (which is window in web-browsers).
Declaring a variable in Javascript is done like var x = 5. This creates a new variable in the current scope (e.g. the function you're in). What happens when don't use var?
Javascript needs to be clever when you do an assignment without declaring a variable, e.g. x = 7. To find that variable,
- it first looks up
xin the current scope - next, it goes up the scope chain, looking for
x - finally it hits the global scope
When it finds an existing property or variable named x, it assigns the new value. If it doesn't, a new global property is created and assigned the value (7).
Posted by Dominik Schöler to makandra dev (2013-04-03 13:00)