前端面试总结(看看那些是你不知道的)
一、什么是闭包?闭包的工作原理?闭包的优缺点? 闭包最简单的理解就是在函数内部还有函数,为了解决JavaScript的局部变量问题, 如何从函数外部访问到函数内部的局部变量。 想了解更多请参考: 什么是闭包?闭包的工作原理?优缺点 二、JS的垃圾回收机制? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是 标记清除 。 工作原理:是当变量进入环境时,将这个变量标记为“进入环境”。当变量离开环境时,则将其标记为“离开环境”。标记“离开环境”的就回收内存。 工作流程: 1. 垃圾回收器,在运行的时候会给存储在内存中的所有变量都加上标记。 2. 去掉环境中的变量以及被环境中的变量引用的变量的标记。 3. 再被加上标记的会被视为准备删除的变量。 4. 垃圾回收器完成内存清除工作,销毁那些带标记的值并回收他们所占用的内存空间。 引用计数 方式 工作原理: 跟踪记录每个值被引用的次数。 工作流程: 1. 声明了一个变量并将一个引用类型的值赋值给这个变量,这个引用类型值的引用次数就是1。 2. 同一个值又被赋值给另一个变量,这个引用类型值的引用次数加1. 3. 当包含这个引用类型值的变量又被赋值成另一个值了,那么这个引用类型值的引用次数减1. 4. 当引用次数变成0时,说明没办法访问这个值了。 5. 当垃圾收集器下一次运行时