关于闭包用途的一个疑问

关于闭包的问题:

闭包的用途之一是能让变量的值始终保存在内存中。为什么能始终保存在内存中呢?我看了一下原因是这样解释的:f1是f2的父函数,f2被赋给了一个全局变量,f2始终存在内存中,f2的存在依赖f1,因此f1也始终存在内存中,不会在调用结束后,被垃圾回收机制回收。

问题来了:f2被赋给了一个全局变量是什么意思?它是存在堆内存中了吗?

通常,如果f1是f2内的变量,那么它就是一个局部变量,局部变量存储在栈中,在f1被调用时创建,f1调用结束时销毁,但是如果是闭包,f2被赋给了一个全局变量,全局变量属于window对象的属性,window对象存储在堆内存中,所以全局变量保存在堆内存中,并且生命周期取决于窗口的创建和销毁