华为od 面试八股文_前端_03_含答案

本文详细讲解了前端面试中的常见问题,包括如何避免DOM回流与重绘、优化动画技巧、documentFragment的使用及其与直接操作DOM的差异、节流与防抖的原理及应用场景、JavaScript数据类型与对象的区别,以及null和undefined的异同。同时探讨了let、const与var的差异、new操作符的工作原理,以及Map与Object的比较,为前端开发者提供面试必备知识点。

目录

1:如何避免回流与重绘?

2:如何优化动画?

3:documentFragment 是什么?用它跟直接操作 DOM 的区别是什么?

4:聊聊你对节流与防抖的理解

5:实现下节流函数和防抖函数

6:JavaScript有哪些数据类型,它们的区别?

7:null和undefined区别

8:let、const、var的区别

9: new操作符的实现原理

10:map和Object有哪些区别?


1:如何避免回流与重绘?

减少回流与重绘的措施:

  • 操作DOM时,尽量在低层级的DOM节点进行操作
  • 不要使用 ​table​布局, 一个小的改动可能会使整个 ​table​进行重新布局
  • 使用CSS的表达式
  • 不要频繁操作元素的样式,对于静态页面,可以修改类名,而不是样式。
  • 使用absolute或者fixed,使元素脱离文档流,这样他们发生变化就不会影响其他元素
  • 避免频繁操作DOM,可以创建一个文档片段 ​documentFragment​,在它上面应用所有DOM操作,最后再把它添加到文档中
  • 将元素先设置 ​display: none​,操作结束后再把它显示出来。因为在display属性为none的元素上进行的DOM操作不会引发回流和重绘。
  • 将DOM的多个读操作(或者写操作)放在一起,而不是读写操作穿插着写。这得益于浏览器的渲染队列机制

浏览器针对页面的回流与重绘,进行了自身的优化——渲染队列

浏览器会将所有的回流、重绘的操作放在一个队列中,当队列中的操作到了一定的数量或者到了一定的时间间隔,浏览器就会对队列进行批处理。这样就会让多次的回流、重绘变成一次回流重绘。

上面,将

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MISAYAONE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值