Given the following code:
var b = 6;
var foo = function (a) {
a = b + a;
return function () { return a; };
};
b = 2;
var bar = function () {
var b = 3;
return foo(b);
};
what would bar()() evaluate to, if JavaScript were dynamically scoped ?
Determine what the foo and bar functions return.
Keep in mind the difference between a function definition expression and a function call.
Note that the code defines two variables called b.
Remember the difference between the static (or compile-time) context and the dynamic (or run-time) context.