浅谈闭包的使用

闭包


前言

这是小编第一次写关于js方面的文章,所以从闭包开始写起,就是因为在面试过程中出现的几率比较大,有什么不对的地方,欢迎大家指出,我们共同进步


提示:以下是本篇文章正文内容,下面案例可供参考

一、闭包是什么?

闭包就是指一个函数能够访问到另一个函数作用域内部变量的函数(一般为子函数调用父函数的变量)

二、为什么使用闭包呢?

学习一门技术的前提是知道为什么要用这项技术,众所周知,函数内部是没有状态的,在函数执行完毕后,局部变量会自动销毁,使用闭包以后,可以
1.缓存变量,替代全局变量使用,避免全局变量污染
2.外部函数访问函数内部变量称为可能

三、代码示例

1.闭包访问外部函数变量

function parent(){
    var x = 10;
	function child(){
	    var y = x + 10
	    return y
	}
	return child()
}
var result = parent()
//result 20
//chilid为子函数,定义在父函数parent中,child函数里面调用了父函数parent的局部变量x,在执行parent函数时,执行了child函数并将其结果返回,注意此时的x并没有随着parent函数的执行完毕而被销毁

2.闭包缓存数据

function parent(){
    var x = 10;
	return function(){
			    var y = ++x
			    return y
	       }
}
var fn= parent()
fn() //11
fn() //12
fn() //13

//可能部分同学会以为结果是11,11,11,是不是很意外啊,哈哈
//原因:之前我们说了,闭包可以缓存数据,执行parent函数后,返回了child函数,也就是fn=function(){var y=++x;return y}。这个时候执行fn,有的小伙伴会问,返回的函数fn没有声明局部变量x啊,程序会报错的,其实不然,因为使用了闭包,所以此时x已经被缓存起来了,只要不重新执行parent()函数,x就会执行+1操作



四、注意

不要滥用闭包,因为闭包缓存了数据,没有像普通函数一样执行完毕局部变量自动销毁,而是长久的霸占一块内存,得不到释放,所以滥用闭包可能导致浏览器内存泄漏,以至于访问页面后崩溃

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值