2020-11-04 闭包入门了解

学习笔记,如有欠缺的地方望大家指点

什么是闭包?

我理解的闭包:闭包就是一个可以读取其余函数内部变量的函数。

没有闭包的函数

function fun(){
	var a = 10;
}
console.log(a);//not a defined

总所周知,一般情况下,在函数外部是拿不到函数内部的变量的,那如果我们需要内部变量怎么办?

function fun(){
	var a = 10;
	return a;
}

通过返回值,我确实可以拿到变量 a 的值,那如果我想拿每次 a 自加的值呢,每当我调用一次就 +1 ,通过返回值肯定是做不到的,函数在调用结束的时候,内部所有产生的变量都会被垃圾机制回收。

闭包函数

function fun(){
	var a = 10;
	return function fun1(){
		return a;
	}
}
var fun2 = fun();
console.log(fun2());//10

上面这个代码看上去与直接返回 a 这个变量没什么区别,但是我们确实在函数外部读取到了函数内部的值
写一个稍微复杂的例子

function fun(){
	var a = 10;
	function add(){
		a++;
		console.log(a);
	}
	return add;
}
var f = fun();
f();//11
f();//12

我们实现了通过外部去操作内部的值,并且内部的值并没有被回收,而是进行了保留

闭包的优缺点

闭包的优点

  1. 可以通过函数外部访问到内部的值
  2. 可以保存函数内部的值
  3. 私有变量可以让我们的代码更安全

闭包的缺点

  1. 保留的值不会回收销毁,会占用内存空间
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值