4.10 什么是闭包?
闭包就有权访问外部作⽤域中的变量的函数叫闭包 通俗来讲就是作⽤域嵌套 即函数嵌套函数 闭包的优点 延⻓变量的⽣存周期 因为局部变量⼀直被函数调⽤ ⽆法被垃圾机制回收 所有变量封装在函数体内 避免了全局污染 闭包的缺点 因为变量 ⻓期驻扎在内存中 ⽆法被释放 在低版本IE浏览器中 容易造成内存泄漏 解决闭包的⽅法 ⼿动清除局部变量 ⾄为空 即可清除闭包
4.11 什么是垃圾回收机制
JS中内存的分配和回收都是⾃动完成的,内存在不使⽤的时候会被垃圾回收机制⾃动回收[] 内存的⽣命周期 js环境中分配的内存,有如下⽣命周期: 说明: 内存分配 :声明变量,函数,对象的时候,系统会⾃动为他们分配内存 内存使⽤: 既读写内存,使⽤变量 ,函数等 内存回收: 使⽤完毕,由内存回收器 ⾃动回收不再使⽤的内存 全局变量⼀般不会回收(关闭⻚⾯回收) ⼀般情况下局部变量的值,不⽤了,会被⾃动回收掉 内存泄漏:程序中分配的内存由于某种原因程序未释放或⽆法释放 叫做内存泄漏 有两种实现算法: 引⽤计数法 标记清除法
4.12.New 的执⾏机制
1.创建⼀个空对象 2.设置原型链,将构造函数的原型复制给空对象的 _proto 3.更改构造函数的上下为空对象的上下⽂ 4.判断⽗类的返回类型 如果返回的是引⽤数据类型,则new失效!所以new不需要返回值