看一下这段代码

var obj = {
    foo: 5
};

var recursive = (function(){
    if(this.foo === 0){
        return;
    }

    this.foo--;
    recursive();
}).bind(obj);


递归函数是否创建循环引用?如果不是,为什么?

编辑:函数recursive与自身之间的循环引用。我也发现了类似的here

最佳答案

递归函数定义是否创建像this one here这样的循环引用?


是的,它仍然可以。 bind不会改变它,尽管它在参考圆中引入了一个附加链接。


变量recursive具有绑定函数
绑定函数(通过.bind()调用创建)包含一个具有原始函数的插槽
原始函数(从函数表达式创建)将关闭包含recursive的变量范围

09-18 21:52