var a = 1;
function hello() {
(function(){
alert(a);
}());
}
Or is the scope chain only used when objects have been chained together using the prototype
property?
var a = 1;
function hello() {
(function(){
alert(a);
}());
}
Or is the scope chain only used when objects have been chained together using the prototype
property?
Yes the scope chain is used. The scope chain is more related to closures.
When hello is called, for getting the value of a
for alert(a)
, the inner anonymous function is searched for the variable a
.
Not finding anything, it moves up to the function hello
and then one level up to the function / global scope in which hello is defined.
I'm not sure if I understand right your question but I will try to answer. You declare a variable in global scope a
. After you have a function declaration and an IIFE as closure in hello
. When you call hello
the IIFE will execute and because in local scope there isn't any variable a
will go up one level to global scope. So alert 1
.
var a = 1;
function hello() {
(function() {
alert(a);
}());
}
hello();//alerts 1
In the next example I declare a local variable a
so alert will be 3.
var a = 1;
function hello() {
var a = 3;
(function() {
alert(a);
}());
}
hello(); //alerts 3