闭包

什么是闭包?

总结:

1,有函数嵌套
2,内部函数被外部访问,暴露出了句柄「return 内部函数」

上菜
图片.png
图片.png
图片.png
特点

1,暴露出来的这个函数有被调用的可能性「return 内部函数」,外部函数就永远不能被释放「内存泄漏」
内存泄漏是什么意思?
一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束(关闭浏览器)。
function xx(){
var b={name:"pear"}
var a=1
console.log(a)
}
上面代码里面的b就造成了内存泄漏,当xx()执行完后,只是释放了栈里面的b,但是内存里面的数据不会释放

非常容易错的一个coding

完整代码

图片.png

修改:在for循环外部添加一层function包裹

怎么解决这个问题呢?我们需要每个li都绑定点击事件

立即执行函数
完整代码

图片.png

2,外部能访问函数内部的变量

定义全局变量:

var global=  null;  
function fn1(){
     var str1="1";
     function fn2(){
         console.log(str1);
    }
   global=fn2;
}
fn1()//执行了这行,才能得到global=fn2的赋值
global();//1

返回值:

function fn1(){
     var str1="1";
     function fn2(){
         console.log(str1);
    }
    return fn2;
}
var str=fn1()//执行了这行,才能得到str=fn2的赋值
str();//1

闭包的好处,有豆腐块的命名空间

图片.png

这和模块化编程有必然的联系
现在不是很懂为什么$变量不会被覆盖?
参考文章:
方方老师 JS中的闭包是什么?
阮一峰

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 一、变量...
    zock阅读 1,120评论 2 6
  • 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 一、变量...
    zouCode阅读 1,364评论 0 13
  • 闭包: 官方”的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该...
    小裁缝sun阅读 714评论 0 5
  • 昨天中午下班,发现邻居家来了客人,将小方桌搬在公共的走廊里正吃午饭呢,于是主动打了声招呼,聊了二句天气。邻居...
    余香斋主人阅读 715评论 1 2
  • 1、UIStatusBar简介 iOS上的statusBar就是指的最上面的20point高的部分,分为两个部分 ...
    MrJ的杂货铺阅读 5,870评论 2 14

友情链接更多精彩内容