我理解的简单的JS闭包。。。。

本文深入解析JavaScript中的闭包概念,探讨其如何读取其他函数内部变量,并保持这些变量的值始终存在于内存中。通过示例代码展示闭包的实用性和重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

闭包----------------

    首先,我先解释一下,在我的理解范围内闭包就是能够读取其他函数内部变量的函数,

在JS中,只有函数内部的子函数才能读取局部变量,这样的话也可以理解为闭包就是定义在一个函数内部的函数。

闭包代码:

function test(){

    var x = 123 ;

    function a(){

        alert(x);

    }

    return a;

}

var temp = test();

temp(); //结果是123


说了这么多,为什么我们要用这个呢?要调用函数内部的变量我们用面对对象的方法一样的可以实现啊!

其实闭包的用处很多,有的我也不是太清楚,但是我觉得最重要的两个作用就是一个是能读取到函数内部的局部变量,另一个就是能让这些变量的值始终保持在内存当中。

说明代码如下:

function test(){
   

     var x = 123 ;
   

     x_add = function(){x+=1;}
   

     function a(){
       

         alert(x);
   

     }

     return a;

}

var temp = test();//调用了函数,同时也把变量保存在内存当中

temp();//结果为123  

x_add();

//让内存中的变量+1,注意了这个方法前面没有用关键字var,所以他它是一个全局性的变量,而他对应的值是一个匿名函数(anonymous function),而这个匿名函数本身也是一个闭包,所以x_add相当于一个setter,可以在函数外部对函数内部的变量进行操作。但是还有一点值得注意的是这个x_add不能放在var temp = test()执行,因为x_add虽然是全局性的,但是它还是test这个函数内部的一个子函数,test要先执行,否则会出现x_add is unDifined;

var t= temp();//结果为124



转载于:https://my.oschina.net/plentx/blog/155622

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值