前端面试题整合(JS进阶篇)(一)
js的垃圾回收机制是什么原理 垃圾回收机制有两种方法 第一种是标记清除法:当变量进入执行环境时,就标记这个变量为”进入环境”,当变量离开环境的时候,则将其标记为”离开环境”,垃圾收集器在运行的时候会给储存在内存中的所有变量都加上标记,然后它会去掉环境中的标量以及被环境中的变量引用的标记,而在此之后再被加上标记的变量将被视为准备删除的变量,原因是环境中的变量已经无法访问到这些变量了,最后,垃圾收集器完成内存清除工作,销毁那些带标记的值,并回收他们所占用的内存空间 第二种是引用计数法:当声明了一个变量并将一个引用类型赋值给改变量是,则这个值得引用次数就是1,相反,如果包含对这个值引用的变量又取得了另外一个值,则这个值得引用次数就减1,当这个引用次数变成0时,则说明没有办法在访问这个值了,因而就可以将其所占的内存空间给收起来,这样垃圾收集器再下次运行时,它就会释放那些引用次数为0的值所占的内存 哪些操作会造成内存泄露,怎样避免内存泄露 会造成内存泄漏的操作: 意外的全局变量引起的内存泄露 闭包引起的内存泄露 控制台日志 没有清理的DOM元素引用 被遗忘的定时器或者回调 避免内存泄露的操作: 减少不必要的全局变量,或者生命周期较长的对象,及时对无用的数据进行垃圾回收 注意程序逻辑,避免“死循环”之类的 避免创建过多的对象 原则:不用了的东西要及时归还(置为null) AMD\CMD区别