Binding 浅海;深度绑定-此程序将打印什么?
我不知道该怎么做Binding 浅海;深度绑定-此程序将打印什么?,binding,programming-languages,dynamic-binding,static-binding,Binding,Programming Languages,Dynamic Binding,Static Binding,我不知道该怎么做 function f1() { var x = 10; function f2(fx) { var x; x = 6; fx(); }; function f3() { print x; }; f2(f3); }; 对于以下两种绑定方法,程序将打印什么? A) 浅装订 B) 深装订 谢谢你的帮助 只有当过程可以作为参数传递给函数时,深/浅绑定才有
function f1()
{
var x = 10;
function f2(fx)
{
var x;
x = 6;
fx();
};
function f3()
{
print x;
};
f2(f3);
};
对于以下两种绑定方法,程序将打印什么?
A) 浅装订
B) 深装订
谢谢你的帮助 只有当过程可以作为参数传递给函数时,深/浅绑定才有意义
- 深度绑定在传递过程时绑定环境 作为论据李>
- 浅绑定在 过程实际上是被调用的李>
f3()在f2()中被调用,因此获得f2()的环境,并将x的值打印为6,这是f2()的本地值。•执行传递的子程序的call语句的环境 (浅装订)
•已通过子程序定义的环境(深度 绑定) 在某些情况下,声明子程序的子程序也会传递 作为参数的子程序。在这些情况下,深度绑定和特别绑定
都是相同的。浅绑定:执行传递的子程序的call语句的环境 深度绑定:所传递子程序的定义环境 即席绑定:call语句的环境,该语句将子问题作为实际参数传递请参见。简而言之:当调用
f2
时,x的绑定发生在f2
时,深绑定打印10
,当从f2
调用f3
(作为f2
的过程参数)时,浅绑定打印6
作为x
的绑定。