关于闭包的问题:
闭包的用途之一是能让变量的值始终保存在内存中。为什么能始终保存在内存中呢?我看了一下原因是这样解释的:f1是f2的父函数,f2被赋给了一个全局变量,f2始终存在内存中,f2的存在依赖f1,因此f1也始终存在内存中,不会在调用结束后,被垃圾回收机制回收。
问题来了:f2被赋给了一个全局变量是什么意思?它是存在堆内存中了吗?
关于闭包的问题:
闭包的用途之一是能让变量的值始终保存在内存中。为什么能始终保存在内存中呢?我看了一下原因是这样解释的:f1是f2的父函数,f2被赋给了一个全局变量,f2始终存在内存中,f2的存在依赖f1,因此f1也始终存在内存中,不会在调用结束后,被垃圾回收机制回收。
问题来了:f2被赋给了一个全局变量是什么意思?它是存在堆内存中了吗?
通常,如果f1是f2内的变量,那么它就是一个局部变量,局部变量存储在栈中,在f1被调用时创建,f1调用结束时销毁,但是如果是闭包,f2被赋给了一个全局变量,全局变量属于window对象的属性,window对象存储在堆内存中,所以全局变量保存在堆内存中,并且生命周期取决于窗口的创建和销毁