函数内部的变量被全局变量使用,此函数是否会销毁?

发布于 2022-09-12 13:09:18 字数 244 浏览 28 评论 0

闭包是函数内部嵌套一个函数,内部函数被全局变量使用,所以无法释放。但如果函数内部有一个引用类型(不是函数),作为返回值给全局变量使用,此函数会销毁吗?

function f1() {
    var a={};
    return a;
}
var b=f1();
b.say=1;
console.log(b)

另外,根据闭包的定义,函数嵌套的子函数会形成闭包。那么如上例子即使作用域无法释放,应该也不叫闭包吧?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无风消散 2022-09-19 13:09:18

1.

function f1() {
    var a={};
    return a;
}
var b=f1();
b.say=1;
console.log(b)

函数f1执行后返回的是引用,变量b和f1的内部变量a指向同一个对象,变量a和f1函数对象实例将被销毁

2.如下才是闭包,如果函数执行返回后,依旧对其作用域内的变量保持引用关系,就会形成闭包,闭包的形成通过函数的作用域对象实现,每一函数在定义的时候会构成自己的变量作用域对象,如果对外层函数的变量有使用关系,就会引用外层函数的变量作用域,构成变量作用域链

function f1() {
    var _count_=0;
    var a={
        plus:function(){
            _count_++;
        },
        value:function(){
            return _count_;
        }
    };
    return a;
}
var b=f1();
b.plus();
console.log(b.value())
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文