教你如何理解闭包
程序员文章站
2022-08-13 18:48:43
>
落日夕霞的博客...
>
如何理解闭包
-->
如何理解闭包
概念:
闭包:指能够读取其他函数内部变量的函数。
特性:...
如何理解闭包
概念:
闭包:指能够读取其他函数内部变量的函数。
特性:
可以读取函数内部的变量 可以使变量保存在内存中// 例1: function f() { var n = 1; return function () { console.log(n); } } var res = f(); res(); // 1(可以读取f函数内部变量n的值)
//例2: function f1(){ var n = 1; add = function () { // 未使用var定义,此时的add为全局函数 n += 1 } function f2() { console.log(n); } return f2; } /*操作一*/ var res = f1() res() // 1 add() /**函数f2被赋给变量res,f2始终存在于内存中,而f2又依赖f1函数中的变量n, 故f1也始终在内存中,不会在调用结束后,被垃圾回收机制回收。*/ res() // 2 // 若未赋值给res,如下: /*操作二*/ f1()(); // 1(未持有函数的引用,调用完成即被垃圾回收机制回收) add(); f1()(); // 1
闭包的缺点:函数中的变量始终被保存在内存中,消耗内存,可能会造成内存泄漏。
//清除所有调用完成后不需要使用的变量 function f1(){ var n = 1; add = function () { n += 1 } return { f2: function () { return n }, clear: function () { n = null } } } var res = f1() console.log(res.f2()) // 1 add() console.log(res.f2()) // 2 res.clear() console.log(res.f2()) // null
上一篇: 老网站该怎么做网站优化SEO
下一篇: vue---axiosmd5加密案例