5.寫一個返回閉包的函式
阿新 • • 發佈:2020-08-09
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() { }
返回閉包時牢記一點:返回函式不要引用任何迴圈變數,或者後續會發生變化的變數!