初学javascript的函数及闭包困惑

最近刚开始在学习javascript,在函数和闭包这个知识点的时候有点犯糊涂

刚开始看到以下的一段代码,很是不理解
function test()
{
    var a=0;
    return function()
    {
         return a++;
     }
    
}

var b= test();
var c=b();
alert(c);//执行结果为0
var d=b();
alert(d);//执行结果为1


经过查资料和学习后初次有了个大概的了解:

1、第一个alert(c)的值如何来的,为什么?

      javascript有一种特别的数据类型叫函数类型,既然是数据,那么就可以在函数中返回,这样的话以上的例子就可以理解了,test()返回了一个函数类型的数据给变量b,var c=b()就是执行函数func(){ return a++},所以第一个alert(c)的值就是0;


2、至于第二个alert(d)得到的为什么是1?

      其中就涉及到闭包的问题!

     什么是闭包?

     自己也不是很理解,但有一种说法,个人感觉很好接受,一个函数内部的局部函数,被函数外部所引用,这样就创建了一个闭包,就是如上述例子函数test()里的匿名函数function()被函数外部的b所引用;

     闭包有个特点就是函数在返回值后不像一般函数一样释放所占内存,而是依然保留,这样变量a的值还是保留着,所以第二次b()的时候,此时a=1,alert(d)当然返回的是1了;

    初次学习,见识有限,理解难免有偏差,如有不正确的地方,还请指正,期望随着接下来学习的深入,对闭包会有更加真确的认识的应用!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值