闭包 this 自执行函数 上下文栈 js中垃圾回收机制

闭包

全局变量创建的三种方式
闭包 this 自执行函数 上下文栈 js中垃圾回收机制
outer函数外部访问内部变量a
闭包 this 自执行函数 上下文栈 js中垃圾回收机制
解析
(1).先在outer函数内写一个inner函数 执行log(a);
(2).在outer函数底部用return(返回值) 返回inner
(3).用newinner接收outer函数的返回值
(4).执行newinner函数 在后面加上()

上下文栈和作用域
执行上下文(函数上下文):
闭包 this 自执行函数 上下文栈 js中垃圾回收机制
全局上下文 (从头到底执行完)
js 引擎 全局上下文 函数上下文(函数的一个执行过程)

上下文栈 理解成一条流水线闭包 this 自执行函数 上下文栈 js中垃圾回收机制
闭包 this 自执行函数 上下文栈 js中垃圾回收机制
闭包 this 自执行函数 上下文栈 js中垃圾回收机制
上下文栈来执行这个整个代码
解析
(1).执行全局上下文
(2).执行f1函数上下文
(3).执行f2函数上下文
(4).执行f3函数上下文
(5).打印a
(6).全局上下文执行结束

自执行函数 js执行引擎一遇到整个函数 就是立马执行

正常函数 预解析一下 然后通过函数名加() 调用执行
闭包 this 自执行函数 上下文栈 js中垃圾回收机制
text引用名 存在于内存中的内存在 函数中的地址(指针) 指向于堆 堆比栈的空间大
简单的数据类型引用名和值都在这个内存栈里
复杂的 就是对象 值在堆里面 堆与栈通过指针来保持联系

栈就是内存里的一个仓库 用于存放简单的数据类型的名和值,复杂数据类型的引用名
堆也是内存里的一个仓库,比栈更大 用于存放通过指针指向复杂数据类型 比如函数,对象的值

垃圾回收机制和内存管理

内存管理
(1)全局变量和全局对象通过解除引用回收。
(2)局部变量离开执行环境时自动回收

简单数据类型引用名和值存在内存栈中
复杂的就是对象 值在堆里 引用名在栈中 堆与栈通过指针保持联系

栈就是内存里的一个仓库 用于存放简单数据类型的名和值,复杂数据类型的引用名。
堆也是内存中的一个仓库 用于存放通过指针指向复杂数据类型比如函数,对象的值,比栈的内存占量大。

垃圾回收机制:避免内存泄露,溢出 所以需要垃圾回收机制 分为:标记清除和引用计数。

标记清除:当给变量添加清除标记时,引擎就会把被标记的变量从内存清除,
每个变量断绝与父级的连接之后 那么这个变量就会清除。
清楚方法例如:var a=null;
闭包 this 自执行函数 上下文栈 js中垃圾回收机制
闭包 this 自执行函数 上下文栈 js中垃圾回收机制