系统网站哪个好,网站备案 价格,网络营销的理论有哪些,实用网站模板一、闭包的作用
实现公有变量 — 函数累加器可以做缓存#xff08;存储结构#xff09;可以实现封装#xff0c;属性私有化模块化开发#xff0c;防止污染全局变量
闭包实现 1 … 100
function add() {var count 0;function demo() {count;console.log(count);}retur…一、闭包的作用
实现公有变量 — 函数累加器可以做缓存存储结构可以实现封装属性私有化模块化开发防止污染全局变量
闭包实现 1 … 100
function add() {var count 0;function demo() {count;console.log(count);}return demo;
}var counter add();
counter();for (let i 0; i 100; i) {counter();
}闭包对变量影响
function test() {let num 100;function a() {num;console.log(num);}function b() {num--;console.log(num);}return [a, b];
}var myArr test();myArr[0](); // 101
myArr[1](); // 100二、闭包的弊端
当内部函数被保存到外部时将会生成闭包。闭包会导致原有作用域链不释放造成内存泄漏内存被占用的多了剩的内存就少了。反着理解
用立即执行函数解决闭包变量不释放
function test() {let arr [];for (let i 0; i 10; i) {// 闭包触发// for (let i 0; i 10; i) {// arr[i] function() {// document.write(i ); // 十个函数共用一个闭包// }// }// 闭包解决(function(j) {arr[i] function() {document.write(j ); // 现在每个立即执行函数形参 j 的值都不一样用一次就销毁了}})(i);}return arr;}或者是用 let | const 来解决闭包问题