昆明网站建设天软科技连锁餐饮网站建设
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:33
当前位置: 首页 > news >正文
昆明网站建设天软科技,连锁餐饮网站建设,优秀的个人网站设计,网站维护收费目录 一、内存泄露 1、是什么 2、导致的原因 二、垃圾回收机制的策略 三、浅拷贝和深拷贝 1、浅拷贝 .slice() …展开运算符 Object.assign(目标对象, 被复制的对象) …展开运算符 2、深拷贝 structuredClone() 浏览器提供 JSON.parse(JSON.stringify(obj)) …目录 一、内存泄露 1、是什么 2、导致的原因 二、垃圾回收机制的策略 三、浅拷贝和深拷贝 1、浅拷贝 .slice() …展开运算符 Object.assign(目标对象, 被复制的对象) …展开运算符 2、深拷贝 structuredClone() 浏览器提供 JSON.parse(JSON.stringify(obj)) 四、为什么JS是单线程 五、Promise 的原理 六、宏任务和微任务都有哪些 七、宏任务和微任务都是怎样执行 八、变量和函数怎么进行提升的优先级是怎么样的 九、var let const 有什么区别 十、模块化 1、为什么要使用模块化 2、实现模块化的方法 十一、exports和module.exports有什么区别 十二、ESM 和 commonjs 的区别 十三、Commonjs、AMD、CMD、UMD、ESM 都有什么区别 十四、require 和 import的区别 十五、箭头函数和普通函数的区别 十六、箭头函数可以当做构造函数 new 吗 一、内存泄露 1、是什么 不再用的内存没有被及时释放出来导致该段内存无法被使用就是内存泄漏 2、导致的原因 我们无法在通过js访问某个对象而垃圾回收机制却认为该对象还在被引用因此垃圾回收机制不会释放该对象导致该块内存永远无法释放积少成多系统会越来越卡以至于崩溃 二、垃圾回收机制的策略 1、标记清除法 垃圾回收机制获取根并标记他们然后访问并标记所有来自它们的引用然后在访问这些对象并标记它们的引用…如此递进结束后若发现有没有标记的不可达的进行删除进入执行环境的不能进行删除 2、引用计数法 当声明一个变量并给该变量赋值一个引用类型的值时候该值的计数1当该值赋值给另一个变量的时候该计数1当该值被其他值取代的时候该计数-1当计数变为0的时候说明无法访问该值了垃圾回收机制清除该对象 缺点 当两个对象循环引用的时候引用计数无计可施。如果循环引用多次执行的话会造成崩溃等问题。所以后来被标记清除法取代。 三、浅拷贝和深拷贝 1、浅拷贝 只会对对象本身进行复制不会复制对象中的属性或元素对象与被复制的对象指向的还是同一个内存地址。 数组方法 .slice() …展开运算符 对象方法 Object.assign(目标对象, 被复制的对象) …展开运算符 Object.assign({}, obj1) 2、深拷贝 深拷贝指不仅复制对象本身还复制对象中的属性和元素 方法 structuredClone() 浏览器提供 JSON.parse(JSON.stringify(obj)) 手写深拷贝 见 》 四、为什么JS是单线程 因为JS里面有可视的Dom如果是多线程的话这个线程正在删除DOM节点另一个线程正在编辑Dom节点导致浏览器不知道该听谁的 五、Promise 的原理 六、宏任务和微任务都有哪些 宏任务script、setTimeOut、setInterval、setImmediate微任务:promise.then、process.nextTick、Object.observe、MutationObserver注意Promise是同步任务 七、宏任务和微任务都是怎样执行 执行宏任务script进入script后所有的同步任务主线程执行所有宏任务放入宏任务执行队列所有微任务放入微任务执行队列先清空微任务队列再取一个宏任务执行再清空微任务队列依次循环 八、变量和函数怎么进行提升的优先级是怎么样的 对所有函数声明进行提升除了函数表达式和箭头函数引用类型的赋值 开辟堆空间存储内容将地址赋给变量对变量进行提升只声明不赋值值为undefined 九、var let const 有什么区别 var var声明的变量可进行变量提升let和const不会var可以重复声明var在非函数作用域中定义是挂在到window上的 let let声明的变量只在局部起作用let防止变量污染不可在声明 const 具有let的所有特征不可被改变不可改变只适用于直接地址。如果使用const声明的是对象的话是可以修改对象内部的值的 十、模块化 1、为什么要使用模块化 防止命名冲突更好的分离按需加载更好的复用性更高的维护性 2、实现模块化的方法 早期命名空间、闭包 现在CommonJS、AMD模块、ES6模块 十一、exports和module.exports有什么区别 导出方式不一样 exports.xxxxxxmodule.export {}exports是module.exports的引用两个指向的是用一个地址而require能看到的只有module.exports 十二、ESM 和 commonjs 的区别 commonjs 是运行时加载 ESM 是编译时加载commonjs 是同步加载模块ESM 是异步加载模块commonjs 是对值的浅拷贝ESM 是对值的引用而且不可修改直接地址不可修改类似于 const 十三、Commonjs、AMD、CMD、UMD、ESM 都有什么区别 1、Commonjs是同步执行的不适合前端后端 nodejs 可以使用 commonjs。 2、AMD/CMD/UMD 适用前端 异步执行。 3、ESM使用 export 、 export default 来导出模块使用 import 来引入模块 4、AMD 和 CMD 的差别是 AMD 是依赖前置把依赖放在前面、提前执行即使没有用到某个模块也会提前执行 CMD依赖就近、延时执行用到的时候在声明依赖 十四、require 和 import的区别 调用时机 require 是运行时调用所以其实是可以放在任何地方的Import 是编译时调用所以必须放在文件的开头 使用时 require 需要使用 module.exports fs 或者exports.fs xxximport 用 export default 或 export const xx 解构赋值 require 是赋值的过程import 是解构的过程 十五、箭头函数和普通函数的区别 箭头函数是普通函数的简写但是它不具备很多普通函数的特性箭头函数的this指向它定义时所在的对象而不是调用它的对象不会进行函数提升没有arguments对象不能使用arguments如果要获取参数的话可以使用rest运算符没有yield属性不能作为生成器Generator使用 十六、箭头函数可以当做构造函数 new 吗 不能new。因为没有自己的this不能调用call和apply。没有prototypenew关键字内部需要把新对象的_proto_指向函数的prototype。
- 上一篇: 昆明网站建设培训求个免费网站好人有好报
- 下一篇: 昆明网站建设优化wordpress 魅族
相关文章
-
昆明网站建设培训求个免费网站好人有好报
昆明网站建设培训求个免费网站好人有好报
- 技术栈
- 2026年03月21日
-
昆明网站建设那家好wordpress变英文
昆明网站建设那家好wordpress变英文
- 技术栈
- 2026年03月21日
-
昆明网站建设公司哪家好做网站cnfg
昆明网站建设公司哪家好做网站cnfg
- 技术栈
- 2026年03月21日
-
昆明网站建设优化wordpress 魅族
昆明网站建设优化wordpress 魅族
- 技术栈
- 2026年03月21日
-
昆明网站建设注意事项网页设计站点建设实验报告
昆明网站建设注意事项网页设计站点建设实验报告
- 技术栈
- 2026年03月21日
-
昆明网站开发报价南京app开发外包公司
昆明网站开发报价南京app开发外包公司
- 技术栈
- 2026年03月21日
