I\'m finding myself by Javascript\'s variable scope, could someone explain to me why the first example doesn\'t work but the second does?
function test() {
ret
In Javascript, functions define scope. In your first example the_variable
is outside of the scope of test
. On the other hand, in the second example, the_variable
is defined in the global scope and is available everywhere.
EDIT
Catch the_variable
in a closure if you want it to be available to test
.
var foo = (function () {
var the_variable = "does work";
function test() {
return typeof(the_variable) !== 'undefined' && the_variable;
}
return {test : test};
}());
console.log(foo.test());
Output:
does work
Explained in comments:
function test() {
return typeof(the_variable) !== 'undefined' && the_variable;
}
// The variable in this function is scoped to the anonymous function.
// It doesn't exist outside that function, so `test` cannot see it
(function () {
var the_variable = "doesn't work";
console.log(test());
}());
// This variable exists in a scope that wraps the `test` function, so it can see it.
var the_variable = "does work";
console.log(test());