闭包 this 自执行函数 上下文栈 js中垃圾回收机制
闭包
全局变量创建的三种方式
outer函数外部访问内部变量a
解析:
(1).先在outer函数内写一个inner函数 执行log(a);
(2).在outer函数底部用return(返回值) 返回inner
(3).用newinner接收outer函数的返回值
(4).执行newinner函数 在后面加上()
上下文栈和作用域
执行上下文(函数上下文):
全局上下文 (从头到底执行完)
js 引擎 全局上下文 函数上下文(函数的一个执行过程)
上下文栈 理解成一条流水线
上下文栈来执行这个整个代码
解析:
(1).执行全局上下文
(2).执行f1函数上下文
(3).执行f2函数上下文
(4).执行f3函数上下文
(5).打印a
(6).全局上下文执行结束
自执行函数 js执行引擎一遇到整个函数 就是立马执行
正常函数 预解析一下 然后通过函数名加() 调用执行
text引用名 存在于内存中的内存在 函数中的地址(指针) 指向于堆 堆比栈的空间大
简单的数据类型引用名和值都在这个内存栈里
复杂的 就是对象 值在堆里面 堆与栈通过指针来保持联系
栈就是内存里的一个仓库 用于存放简单的数据类型的名和值,复杂数据类型的引用名
堆也是内存里的一个仓库,比栈更大 用于存放通过指针指向复杂数据类型 比如函数,对象的值
垃圾回收机制和内存管理
内存管理:
(1)全局变量和全局对象通过解除引用回收。
(2)局部变量离开执行环境时自动回收
简单数据类型引用名和值存在内存栈中
复杂的就是对象 值在堆里 引用名在栈中 堆与栈通过指针保持联系
栈就是内存里的一个仓库 用于存放简单数据类型的名和值,复杂数据类型的引用名。
堆也是内存中的一个仓库 用于存放通过指针指向复杂数据类型比如函数,对象的值,比栈的内存占量大。
垃圾回收机制:避免内存泄露,溢出 所以需要垃圾回收机制 分为:标记清除和引用计数。
标记清除:当给变量添加清除标记时,引擎就会把被标记的变量从内存清除,
每个变量断绝与父级的连接之后 那么这个变量就会清除。
清楚方法例如:var a=null;