Consider the following JavaScript skeletal program The main
Consider the following JavaScript skeletal program:
// The main program
var x;
function sub1()
{ var x; function sub2() { . . . } }
function sub3() { . . . }
Assume that the execution of this program is in the following unit order:
main calls sub1
sub1 calls sub2
sub2 calls sub3
a. Assuming static scoping, in the following, which declaration of x is the correct one for a reference to x?
i. sub1 ii. sub2 iii. sub3
b. Repeat part a, but assume dynamic scoping.
Solution
a) Static scoping :It means that x refers to the x declared in the innermost scope of declaration that has one.
Result :
In sub1: sub1
In sub2: sub1
In sub3: main
b) Dynamic scoping : It means that x refers to the x declared in the most recent frame of the stack that has one.
Result :
In sub1: sub1
In sub2: sub1
In sub3: sub1.
