JavaScript闭包
2020-04-06 07:19
1431 查看
什么是闭包
通俗的来说,利用函数的嵌套,实现将第一层函数中的局部变量,可以在第一层函数外部修改的过程,叫闭包。
闭包的形成环境
- 函数的嵌套。
- 内部函数使用外部函数中的变量。
- 将内部函数返回,在外部函数的外部,接收返回值,执行(相当于执行了内部函数)。
闭包的特点
- 解决掉所有的全局变量,节省内存空间。
- 可以在函数外部,修改函数内部的变量。
- 相对于局部变量来说,浪费了内存。
闭包的应用场景
- 循环中的事件,事件处理函数中使用了循环的每次的计数器
var ali = document.querySelectorAll(".list li"); for(var i=0;i<ali.length;i++){ (function(index){ ali[index].onclick = function(){ console.log(index); } })(i); }
此处可以拿到对应li的序列号,闭包并不是一种固定写法,而是一种场景,只要满足了三个条件,就是闭包。
- 给某些系统默认的回调函数,传参
// (给计时器的回调函数,传参) function fn(a){ return function(){ console.log(a); }; } setTimeout(fn("world"), 1000);
- 处理掉全局变量,只要开启新文件,新功能,最好上手就是一个匿名函数,简易闭包
var f = (function(){ var a = "hello"; function fn(){ console.log(a + "world"); } return fn; })(); f();
- 事件委托,利用到了闭包
obox.onclick = eveEnt(achild,function(){}) function eveEnt(eleArr,cb){ return function(eve){ eleArr cb } }
闭包的拓展,计算机的垃圾回收机制
硬盘的:存储空间,删除数据,先转到某个空间中(回收站),可以找回来,内存的:运行空间,删除数据,直接删除,找不回来。
闭包:就是利用作用域的嵌套,触发计算机的垃圾回收机制。
私有变量:函数内部的变量,在外部修改。
闭包:就是利用作用域的嵌套,将局部变量进化成私有变量的环境。
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 深入理解Javascript闭包(closure)
- 深入理解JavaScript闭包(closure)
- javascript闭包(Closure)初探
- Javascript闭包(Closure)
- javascript闭包
- 理解JavaScript闭包
- javascript闭包(转)
- 深入理解Javascript闭包(closure)
- javascript闭包产生的内存泄漏
- 深入理解Javascript闭包
- 关于本人对javascript闭包的理解
- 深入理解JavaScript闭包(closure)
- 献给各位新手——真正搞清楚javascript闭包(2)
- 深入理解Javascript闭包
- Javascript闭包
- javascript闭包
- javascript闭包
- javascript闭包
- javascript闭包中循环问题
- javascript闭包