浅&深度绑定 - 这个程序会打印什么?

时间:2013-03-21 14:43:47

标签: 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)深度绑定

感谢您的帮助!

3 个答案:

答案 0 :(得分:8)

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

  • 深度绑定在传递过程时绑定环境 作为一个论点。
  • 浅层绑定在a时绑定环境 程序实际上被称为。

深层绑定。

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

浅层绑定。

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

的本地

答案 1 :(得分:1)

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

•传递子程序定义的环境(深层次 结合)。

在某些情况下,声明子程序的子程序也会通过该子程序 子程序作为参数。在这些情况下,深度绑定和临时绑定 是一样的。

答案 2 :(得分:-2)

浅层绑定:制定传递的子程序的调用语句的环境 深度绑定:所传递子程序的定义环境 临时绑定:将子问题作为实际参数传递的调用语句的环境