js引擎会在对js代码编译之前,会在堆内存中创建一个Global Object(全局对象)对象内部存储了很多的属性和方法,里面也有window属性,只不过这个window属性的 属性值指向的Global Object(全局对象)
闭包诞生于: 只要从Global Object(全局对象)这个根对象中能找到一个属性引用着一个函数,而且函数内部引用了外部作用域的变量,那么这个函数与外部被引用的变量绑在一起称为闭包
比如这里对应着如下图片
在编译阶段 在全局作用域中已经声明的值将会被存储到GO对象中作为属性,且值是undefined。
而对于函数的话,会开辟一个新的内存存储函数对象,内容包括parentScope指向父级作用域,和函数执行体,GO会以引用地址方式来指向函数对象的地址. 这里面的VO是存在与执行上下文的环境当中的