浅层和深层绑定 - 此程序将打印什么?

Ric*_*cky 7 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);
};
Run Code Online (Sandbox Code Playgroud)

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

谢谢您的帮助!

小智 9

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

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

深度绑定.

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

浅层绑定.

F3()被调用在F2() ,因此得到的环境F2() ,并打印在6 x的值,它是本地的F2()