前端,闭包,闭包的优缺点
(1)什么是闭包?
let local = '变量' function foo(){ console.log(local) } //在函数内部可以访问的local变量
三行代码中,有一个局部变量loacl,有一个函数foo,foo里面可以访问到local变量,这就是闭包。其实就是这么简单。
(2)闭包的用途
闭包常常用来间接访问一个变量,换句话说,隐藏一个变量
假设我们有一个抽奖机会的变量,如果你不使用闭包,你可以直接用一个全局变量
window.choujiang = 10 //还有10次抽奖机会
这样看起来很不妥,万一有人把这个值改成了100,1000呢?所以我们不能让任何人直接访问这个变量。那我们我们就要用到局部变量
但是局部变量又不能让别人访问到?怎么办?
暴露一个访问器(函数),让别人间接访问。
代码如下:
!function(){ let choujiang = 10 window.奖励一次抽奖 = function(){ choujiang +=1 } window.减去一次抽奖 = function(){ choujiang -=1 } }()
(3)闭包的缺点是什么?
由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

浙公网安备 33010602011771号