0412 手打基础丸

30 阅读2分钟

手打基础丸 🧆 => 精选基础知识,经过多道工序精心制作而成,口感鲜嫩多汁。一口咬下,香气四溢,加上传统前端风味,令人回味无穷...... 助力食用者厚积薄发,夯实根基进阶上层。

JS中Map和WeakMap区别?

Map的键可以是任意类型,WeakMap的键必须是对象类型,两者值都没有类型限制

Map的键是强引用,值删除后键不会自动回收,WeakMap的键是弱引用,值删除后键会自动回收

Map可以遍历,WeakMap不能遍历

使用CSS和JS来实现动画有哪些优缺点?

CSS动画

可以使用浏览器GPU加速,更流畅和高效;简单动画实现代码简洁;占用内存少

同时灵活性较低;杂动画代码复杂不好维护;同浏览器兼容性不同。

JS动画

灵活度高,兼容性好,复杂动画代码好维护

同时占用资源多;现复杂度高;能取决于JS引擎,提高性能需优化代码

前端的跨页面通信方式?

Cookie:Cookie共享可以实现简单的跨页面通信,但是容量较小,无持久性

localstorage和sessionStorage(H5):相比cookie容量扩大,localstorage有持久性

BroadcastChannel(H5):仅支持同域内跨页面通信

WebSocket:一种 持久化协议,可以实现浏览器和服务器双向通信,跨页面通信

SharedWorker:一种特殊类型的WebWorker,可以通过postMessage跨页面通信,多个页面共享数据

JS如何阻止冒泡和默认事件?

两个方法根据需求谨慎使用,涉及用户使用习惯等问题

document.getElementById("id").addEventListner('事件名如click', (e)=>{
  event.stopPropagation()//阻止冒泡
  event.preventDefault()// 阻止默认事件
})

什么是虚拟DOM?

虚拟dom:使用JS对象来模拟真实dom中的节点,包含真实dom的结构和属性。

在现代框架vue和react中都有使用的虚拟dom,为了解决频繁操纵真实dom引起的回流和重绘导致的性能问题,渲染之前会对比真实dom变化差异(diff算法)减少dom操作次数,提高渲染性能