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