JavaScript 基础——闭包

2023-02-05 0 838

表述

怎样造成旋量群 当两个冗余的内部(子)表达式提及了冗余的内部(父)表达式的表达式(表达式)时,就造成了旋量群旋量群究竟是甚么 旋量群是冗余的内部表达式包涵被提及表达式(表达式)的第一类旋量群存有于冗余的内部表达式中造成旋量群的前提 冗余表达式内部表达式提及了内部表达式的统计数据(表达式/表达式)function fn1() { var a = 1 function fn2() { console.log(a) } } fn1()

常见的旋量群

将表达式做为另两个表达式的codice function fn1() { var a = 1 function fn2() { a++ console.log(a) } return fn2 } varf = fn1() f()// 3 f() // 4将表达式做为std传达给另两个表达式调用 function showDelay(msg, time) { setTimeout(function(){ alert(msg) },time) } showDelay(旋量群, 2000)

促进作用

采用表达式内部的表达式在表达式继续执行瘤果,依然生存在缓存中(缩短了局部表达式的开发周期)让表达式内部能操作方式(随机存取)到表达式内部的统计数据(表达式/表达式)

更为重要

表达式继续执行瘤果,表达式内部新闻稿的局部表达式通常不存有,存有于旋量群中的表达式才可能存有在表达式内部不能能直接访问表达式内部的局部表达式,但是能通过旋量群让内部操作方式它

开发周期

在冗余内部表达式表述继续执行完时就造成了(不是在调用)在冗余的内部表达式成为垃圾第一类时,就消失了 function fn1() { var a = 1 // 此时旋量群已造成(表达式提升,内部表达式第一类已经创建) function fn2() { a++ console.log(a) } return fn2 } var f = fn1() // 造成旋量群 f() // 3 f() // 4 f = null // 闭包消失,包涵旋量群的表达式第一类成为垃圾第一类

应用

表述 js模块 // myModule.js function myModule() { // 私有的表达式统计数据 var msg = my module function do(){ console.log(do + msg) } function other() { console.log(other + msg) } // 向外暴露第一类或方法 return { do: do, other: other } } // main var m = myModule() m.do() m.other() // myModule2.js (function(w) { var msg = my module function do() { console.log(do + msg) } function other() { console.log(other + msg) } // 向外暴露第一类或方法 w.myModules = { do: do, other: other } })(window) // main 更优化的方法,可直接提及采用myModules.do() myModules.other()

旋量群的缺点

表达式继续执行完成后,表达式内的局部表达式没有释放,占用缓存的时间会变长容易造成缓存泄漏

怎么解决

能不用就不用及时释放

缓存溢出和缓存泄漏

缓存溢出

一种程序运行出现的错误当程序运行需要的缓存超过了剩余的缓存时,就抛出缓存溢出的错误

缓存泄漏

占用的缓存没有及时释放缓存泄漏积累多了就容易导致缓存溢出常用的缓存泄漏 意外的全局表达式没有及时清理的计时器或回调表达式旋量群

– END –

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务