闭包详解

2021-05-28  本文已影响0人  蓝蓝红同学

一、概念及理解

概念:能读取其他函数内部变量的函数。

概念理解:一般而言,函数内部的变量是无法被直接访问到的,于是通过在函数内部定义一个函数(即闭包)来解决这个问题,使用这个内部函数来调取父函数的内部变量。

闭包的创建:­­­闭包就是可以创建一个独立的环境,每个闭包里面的环境都是独立的,互不干扰。

二、内存泄漏

        关于闭包的内存泄露,因为闭包创建独立的环境,即每次外部函数执行的时 候,外部函数的引用地址不同,都会重新创建一个新的地址。

        但是关于闭包是否会造成闭包泄露,有待商榷,详细观点参考:

        https://zhuanlan.zhihu.com/p/22486908

        https://www.cnblogs.com/rubylouvre/p/3345294.html

三、详细例子及解析

重点:闭包找到的是同一地址中父级函数中对应变量最终的值

例一

例一

例二

例二

例三

例三

例四

例四

例五

例六

例六

ps:1.valueOftoString分别将数据转换为原始值和字符串,并且二者都可以进行手动的重写,例六就对toString进行了重写,使其返回sum的值

        2.alert、console.log等会自动调用toString方法

例七

例七

例八

例八

例九

例九

例十

例十

例十一

例十一

注:本文中所有例子均来自于此博客:https://blog.csdn.net/weixin_43586120/article/details/89456183

所有分析注释均为作者小白浅显理解,如有错误,欢迎指正!!

上一篇下一篇

猜你喜欢

热点阅读