关闭循环参考?

时间:2017-10-13 13:26:46

标签: javascript

看一下这段代码

var obj = {
    foo: 5
};

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

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

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

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

1 个答案:

答案 0 :(得分:2)

  

递归函数定义是否创建循环引用,如this one here

是的,它仍然存在。虽然bind在参考圈中引入了额外的链接,但recursive并未改变这一点。

  • 变量.bind()包含绑定函数
  • 绑定函数(从recursive调用创建)包含具有原始函数的插槽
  • 原始函数(从函数表达式创建)将关闭包含dependencies { compile('com.mycompany.test:mycompany-test:1.0.0@aar') { transitive = true changing = true }
  • 的变量作用域