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

js中全局变量和局部变量初始化问题

js中全局变量和局部变量初始化问题

千万里不及你 2018-09-13 10:10:34
var age=100;function box(){    age++;}box();//age=101box();//age=102function box(){var age=100;age++;return age; }box();//age=101;box();//age=101为什么全局变量初始化过后,调用函数会累加?而局部变量每次调用变量都会初始化一次?他们这个过程中发生了什么呢?是因为储存方式,内存的原因??
查看完整描述

1 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

第一个例子中的age在全局中声明,即全局变量,所以age一直存在,每次调用box()时会根据作用域链找到全局作用域中的age,所以会一直累加;
第二个例子中的age在box中声明,即局部变量,agebox调用时创建,调用完box()即被销毁,下次再调用box时会创建一个新的age,调用完再销毁,所以无法实现累加,如果想实现的话,可以使用闭包,创建闭包之后对私有变量处于引用状态,不会销毁,存在内存中,可以实现累加。

function box(){    var age=100;    return function() {
        age++;        console.log(age);
    }
}var b = box();
b(); // 101b(); // 102

学习Javascript闭包(Closure)


查看完整回答
反对 回复 2018-10-08
  • 1 回答
  • 0 关注
  • 1797 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信