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

你们理解javascript的闭包了么?

标签:
JavaScript

javascript中的闭包

javascript中的闭包很强大,但有些时候也难免难以理解。

以下是我的对于闭包的理解,并且我用一个demo程序和其中通俗易懂的注释说明以下什么事闭包,闭包有什么用。

代码:

/*
* javascript闭包
* 假设实现一个计数器
* */

//第一种方法
var counter = 0;
function add()
{
    return ++counter;//计数器加1
}

add();//counter为1
add();//counter为2
//但是这样的问题是其它函数也可以修改counter的值,因为counter是全局变量
//第二种方法
function add2()
{
    var counter2 = 0;//定义局部变量counter2
    return ++counter2;//计数器加1
}

add2();//counter2为1
add2();//counter2为1
//可是这样每次调用都是counter的值都是1,这就有点尴尬了
//那么其实闭包就可以很好地解决这个问题,什么事闭包?
//通俗点说闭包就是函数内部又定义了函数,并且定义的子函数又使用了其父函数作用域的变量
//第三种方法
function add3()
{
    var counter3 = 0;//定义计数器
    return function()//定义闭包函数
    {
        return ++counter3;//计数器加1
    }
}
var raise = add3();//外部接收闭包函数
raise();//counter3为1
raise();//counter3为2
//这样只有raise能够改变计数器counter3的值了
//不但实现了功能,而且对counter3这种私有变量(不能被外部访问)实现了很好地封装
//这就是闭包
点击查看更多内容
16人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消