The next 4 Javascript questions may seem easy to some of you, but I am sure that more than a few will get confused.
I believe that these 4 simple questions will help you understand a key feature of the language.
Question: What will happen after executing the next JS code?
function outer(){
var x=1;
var inner = function(){
alert(">"+x);
}
x=2;
return inner;
}
outer();
1. Nothing
2. alert ‘>undefined’
3. alert ‘>1′
4. alert ‘>2′
Answer:
Nothing, because outer() returned a function but it wasn’t executed.
Question: What will happen after executing the next JS code?
function outer(){
var x=1;
var inner = function(){
alert(">"+x);
}
x=2;
return inner;
}
outer()();
1. Nothing
2. alert ‘>undefined’
3. alert ‘>1′
4. alert ‘>2′
Answer:
alert ‘>2′, because the x that inner() uses is the same x the outer() uses.
Question: What will happen after executing the next JS code?
function outer(){
var x=1;
var inner = function(x){
alert(">"+x);
}
x=2;
return inner;
}
outer()();
1. Nothing
2. alert ‘>undefined’
3. alert ‘>1′
4. alert ‘>2′
Answer:
alert ‘>undefined’. Inner uses a variable x which is different than the outer x. The inner x is never initialized
Question: What will happen after executing the next JS code?
function outer(){
var x=1;
var inner = function(x){
alert(">"+x);
}
x=2;
return inner;
}
outer()(3);
By now the answer should be obvious: alert ‘>3′ .
Great refreshment