为了账号安全,请及时绑定邮箱和手机立即绑定

函数中变量的生存周期

JavaScript中函数的生存周期是不是跟C语言里面一样,在函数结束之后就返还给内存了?就是在函数之外就不能再引用和写入函数里面的变量了?请举例说明。

正在回答

1 回答

Javascript和C语言一样也采用词法作用域(lexical scoping),就像你说的一样,这种特性叫“闭包”,每次调用函数都会创建新的对象来保存局部变量,并把这个对象添加到作用域链中,当函数返回的时候就从作用域链中把这个对象销毁,只有不存在嵌套函数或者其它指向这个函数的引用,它才会被当成垃圾回收,这一点和你的认识有点偏差。

function counter(){
    var n = 0;
    return {
        count : function(){ return n++; },
        reset : function(){ n = 0; }
    };
}
var c = counter(),d = counter();
c.count();
d.count();
c.reset();
c.count();
d.count();


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

函数中变量的生存周期

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信