js闭包——学习笔记

上次学习了js的作用域,其实理解还不太深刻,今天做的是js的闭包。
开始先说下函数的生命周期:
全局变量:全局变量的作用域是针对全局,在整个javascript中全局变量都是处处存在的。
局部变量:局部变量的作用域只能在函数内使用,函数运行完这个变量会被销毁。

function add() {
    var counter = 0;
    return counter += 1;
}
 
add();
add();
add();//调用三次函数,可是输出结果为1.
var add = (function () {
    var counter = 0;
    return function () {return counter += 1;
})();
 
add();
add();
add();//调用三次函数,输出结果为3

代码二中的函数自我调用了返回值,这个就是闭包,他使得函数的变量变成私有的,里面的变量不会受影响。
通常情况下,函数的作用域以及它所有的变量都会在函数执行完成以后销毁,可是闭包的可以保存变量一直到这个闭包不存在为止。
注意事项:内存泄漏,由于函数中的变量都保存在内存中,滥用闭包的的话会造成内存的消耗,如果不是必须,尽量避免使用闭包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值