11

我不知道该怎么做...

function f1()
{
    var x = 10;
    function f2(fx)
    {
        var x;
        x = 6;
        fx();
    };

    function f3()
    {
        print x;
    };

    f2(f3);
};

对于以下两种绑定方法中的每一种,程序会打印什么?A) 浅绑定 B) 深绑定

谢谢您的帮助!

4

3 回答 3

18

只有当过程可以作为参数传递给函数时,深/浅绑定才有意义。

  • 深度绑定在过程作为参数传递时绑定环境。
  • 浅绑定在实际调用过程时绑定环境。

深度绑定。

这里f3()获取f1()的环境并将x的值打印为10,这是f1()的局部变量。

浅绑定。

f3()在f2()中调用,因此获取f2()的环境并将 x 的值打印为 6,这是f2()的本地

于 2015-07-29T17:20:57.443 回答
1

• 执行传递的子程序的调用语句的环境(浅绑定)

• 传递的子程序的定义环境(深度绑定)。

在某些情况下,声明子程序的子程序也会将该子程序作为参数传递。在这些情况下,深度绑定和临时绑定是相同的。

于 2017-04-24T01:48:23.123 回答
-1

浅绑定:执行传递的子程序的调用语句的环境 深度绑定:传递的子程序的定义环境 Ad hoc 绑定:将子问题作为实际参数传递的调用语句的环境

于 2018-09-19T00:15:49.747 回答