什么是闭包, 菠菜app开发 闭包的用途是什么?

菠菜app开发Q【1784662395】狐霸源码论坛【hubawl.com】


什么是闭包?

闭包:如果一个函数使用了它范围外的变量,那么 这个函数+这个变量 就是闭包。

need-to-insert-img

这函数 最后 输出的 是 'Mozilla'。 init()创建了 一个 name 和一个 函数名为 displayName()的函数。

displayName()是定义在 函数内部的函数,仅在该函数体可用。displayName() 内没有自己的局部变量,然而它可以访问到外部函数的变量,所以 displayName()可以使用父函数 init() 中声明的变量name 。但是,如果有同名变量name 在displayName() 中被定义,则会使用 displayName() 中定义的 name 。

闭包的用途

闭包可以用在许多地方,主要用途。

一是前面提到的 可以读取函数内部的变量,另一个就是让这些变量的值始终保存在内存中,不会在init()调用后被自动清除。

为什么会这样呢?原因在于init()是 displayName()的父函数,而displayName()赋给的全局变量,这导致displayName()始终在内存中,而displayName()的存在依赖于init(),因此init()也始终在内存中,不会在调用结束后,被垃圾回收机制回收。

不必要的闭包 只会徒增内存,可能会造成浏览器性能问题。解决方法是,在退出函数之前,将不使用的局部变量全部删除。另外,闭包在jQuery中的应用非常多。

闭包可以封装私有变量

我们可以把函数当作一个范围,函数内部的变量就是私有变量,在外部无法引用,但是我们可以通过闭包的特点来访问私有变量。

什么是闭包, 菠菜app开发 闭包的用途是什么?_第1张图片

你可能感兴趣的:(什么是闭包, 菠菜app开发 闭包的用途是什么?)