js中的闭包以及闭包的实际运用

2.内部函数引用了外部函数的局部变量

PS:正常情况下,当一个函数调用完之后,内存中关于函数的东西会全部释放掉,局部变量也会消失,而闭包是一种特殊的存在。由于外部函数返回的是内部函数的引用,相当于你返回了一个函数,这个函数还未被真正调用。但是内函数又使用了外函数的变量,导致内存不能释放它们,需要等到内函数使用完成之后才能释放它们----由此形成了闭包

3.闭包 是指有权访问另一个函数作用域中的变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量

2.闭包的用途


**2.1

简单例子1**

闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。

怎么来理解这句话呢?请看下面的代码。

function f1(){

var n=999;

nAdd=function(){n+=1}

function f2(){

alert(n);

}

return f2;

}

var result=f1();

result(); // 999

nAdd();

result(); // 1000

在这里插入图片描述

在这段代码中,result实际上就是闭包f2函数。它一共运行了两次,第一次的值是999,第二次的值是1000。这证明了,函数f1中的局部变量n一直保存在内存中,并没有在f1调用后被自动清除。

这段代码中另一个值得注意的地方,就是“nAdd=function(){n+=1}”这一行,首先在nAdd前面没有使用var关键字,因此 nAdd是一个全局变量。

闭包简单例子2

概念: 闭包只能取得外部函数中任何变量的最后一个值.

function create() {

let res = []

for (var i = 0; i < 5; i++) {

res[i] = function() {

return i

}

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值