我不知道该怎么做...
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()获取f1()的环境并将x的值打印为10,这是f1()的局部变量。
f3()在f2()中调用,因此获取f2()的环境并将 x 的值打印为 6,这是f2()的本地
• 执行传递的子程序的调用语句的环境(浅绑定)
• 传递的子程序的定义环境(深度绑定)。
在某些情况下,声明子程序的子程序也会将该子程序作为参数传递。在这些情况下,深度绑定和临时绑定是相同的。
浅绑定:执行传递的子程序的调用语句的环境 深度绑定:传递的子程序的定义环境 Ad hoc 绑定:将子问题作为实际参数传递的调用语句的环境