1、定义
指能够访问另一个函数作用域中的变量的一个函数(定义在一个函数内部的函数)
2、作用
(1)防止全局污染
(2)利用其可突破作用域链,将函数内部的变量和方法传递到外部,让外部函数可以访 问到内部函数的变量和方法
3、优点
(1)形成闭包的函数在执行之后,不会被回收,依旧存在内存中
(2)私有变量化,适合模块化开发
4、缺点
变量不会回收,耗费内存,容易造成内存泄漏
【内存泄漏:浏览器无法回收代码的内存,比如说一个对象或者一个数组】
5、应用场景:(防抖和节流)
for (var i = 0; i < 3; i++) { setTimeout(function log() { console.log(i); // => ? }, 1000); } for (let i = 0; i < 3; i++) { setTimeout(function log() { console.log(i); // => ? }, 1000); }
function fun() { var arr = [] // for循环中,每次都是往空数组中放入一个匿名函数 // [function(){},function(){},function(){}] for (var i = 0; i < 3; i++) { arr[i] = function () { console.log(i) } } // 循环结束后i为3 // i=3 return arr //[function(){},function(){},function(){}] } var newArr = fun() newArr[0]() newArr[1]() newArr[2]()
标签:闭包,function,函数,newArr,内存,var,log From: https://www.cnblogs.com/le-fang/p/17475790.html