# JS中的ECStack、EC、VO 和 AO
浏览器会在计算机内存中分配一块内存,专门用来供代码执行的栈内存,称作执行环境栈 (ECStack) 同时会创建一个 全局对象(GO),将内置的属性方法( isNaN、setInterval、setTimeout... )存放到一块单独的堆内存空间,并且使用 window 指向全局对象。
在执行代码前,还需要创建一个全局执行上下文( EC(G) ), 创建完成后,进入到栈内存中去执行( 进栈); 在当前全局执行上下文中,因为会创建很多变量并且赋值,所以会创建一个变量对象 VO(Varibale Object) 来进行保存,在函数私有上下文中的变量对象叫做 活动对象 AO(Activation Object) (ps: 每个执行上下文都有一个单独的变量对象)
# 名称解释
# 执行环境栈(ECStack):专门用来供代码执行的 栈内存
# 全局对象(GO):存放内置的属性方法,window 指向
# 全局执行上下文( EC(G) ):页面加载后进栈、销毁后出栈
# 变量对象VO(Variable Object): 存放当前执行上下文中创建的变量和值
# 活动对象AO(Activation Object): 函数私有上下文中的变量对象
AO是一个临时的储存容器,函数执行完毕之后,AO会自动销毁的(但是有一种情况例外,那就是闭包)不过闭包会导致内存泄漏。解决内存泄漏,其实很简单,函数执行完毕后在下面设置函数为null比如,foo=null,这样就解决了内存泄漏的问题