5.写一个返回闭包的函数
1.闭包函数是指有权访问另一个函数作用域中的变量的函数
2.创建闭包函数最常见的方式是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量
3.闭包的特点:1函数嵌套函数,
2 函数内部可以引用外部的参数和变量
3 参数和变量不会被垃圾回收机制回收
4.闭包的优点:1 希望一个变量长期驻扎在内存中 *
2 避免全局变量的污染 *
3 私有变量存在
5.闭包的实现 1:函数嵌套函数 *
2 外层函数返回内层函数 *
3 外面有一全局变量接受外层函数
function fun1() { var sum=0; function fun2() { sum++; return sum } return fun2 } var s=fun1(); console.log(s());
// 自执行函数 的闭包 // var fun3=function () { var a=3; return{ b:7, sum:function () { return this.b+a; } } }(); console.log(fun3.sum());
/* * 把函数名当参数调用 * 回调函数 * * */ function b() { console.log("b"); } function c() { console.log("c"); } function d(fun) { fun(); } d(b); d(c);
// 循环 var num=0; function a1(fun) { fun(a1); } function a2(fun) { num++; console.log(num); if(num>10) return; fun(a2); } a1(a2);
// 事件函数 也是 回调函数 this.addEventListener("click",clickHandler); function clickHandler(e) { } setInterval(animation,16); function animation() { }
返回闭包时牢记一点:返回函数不要引用任何循环变量,或者后续会发生变化的变量!