2021-09-19 关于闭包

产生闭包的条件?(如何产生闭包)

1.存在函数嵌套关系(外部函数中嵌套函数)
2.内部函数引用外部函数的变量
3.调用外部函数

什么是闭包?

闭包是一种引用关系,这个引用关系存在于内部函数中,引用的是外部函数的变量的对象

常见的闭包

1.将函数作为另一个函数的返回值
2.将函数作为实参传递给另一个函数调用
3.使用辩驳实现私有方法操作独立的私有属性

闭包的作用

1.延长外部函数变量对象的声明周期
2.让函数外部可以读写到函数内部的数据(变量/函数) 通过闭包间接的操作
注意:浏览器为了性能 后期会将外部函数中不被内部函数使用的变量清除掉

闭包的声明周期

1.产生:在嵌套内部函数定义完成时就产生了(不是在调用时),外部函数调用的时候闭包供我们使用
2.死亡:在嵌套的内部函数成为垃圾对象时

闭包的缺点和解决(内存溢出和内存泄露)

内存泄露:内存无法释放
内存溢出:内存被撑爆

//
f= null;

解决方式 让闭包机制清除 必须删除外部函数调用时候生成的(定义的)那个对应内部函数

存在几套闭包机制,取决于外部函数被调用几次

闭包面试题及解析

解析见

function fun(n,o){
	console.log(o);
	return{
		fun:function(m){
			return fun(m,n)
		}
	}
}
var a=fun(0);
a.fun(1);
a.fun(2);
a.fun(3);

var b=fun(0).fun(1).fun(2).fun(3);

var c=fun(0).fun(1);
c.fun(2);
c.fun(3);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值