一、概念及理解
概念:能读取其他函数内部变量的函数。
概念理解:一般而言,函数内部的变量是无法被直接访问到的,于是通过在函数内部定义一个函数(即闭包)来解决这个问题,使用这个内部函数来调取父函数的内部变量。
闭包的创建:闭包就是可以创建一个独立的环境,每个闭包里面的环境都是独立的,互不干扰。
二、内存泄漏
关于闭包的内存泄露,因为闭包创建独立的环境,即每次外部函数执行的时 候,外部函数的引用地址不同,都会重新创建一个新的地址。
但是关于闭包是否会造成闭包泄露,有待商榷,详细观点参考:
https://zhuanlan.zhihu.com/p/22486908
https://www.cnblogs.com/rubylouvre/p/3345294.html
三、详细例子及解析
重点:闭包找到的是同一地址中父级函数中对应变量最终的值
例一
例一例二
例二例三
例三例四
例四例五
例六
例六ps:1.valueOf和toString分别将数据转换为原始值和字符串,并且二者都可以进行手动的重写,例六就对toString进行了重写,使其返回sum的值
2.alert、console.log等会自动调用toString方法
例七
例七例八
例八例九
例九例十
例十例十一
例十一
网友评论