2021年底前端面试题总结

148 阅读2分钟

JavaScript篇

1、 for 循环,for of和for in的区别:

for 语句用于创建一个循环,它包含了三个可选的表达式,这三个表达式被包围在圆括号之中,使用分号分隔,后跟一个用于在循环中执行的语句(通常是一个块语句)。

  1. for infor of语句: segmentfault.com/a/119000002…

2、介绍一下节流防抖,并描述具体应用:

函数 防抖,是在一段连续操作结束之后,处理回调,利用clearTimout 和setTimeout 实现。 函数 节流,是在一段连续操作中,每一段时间只执行一次,在频率较高的事件中使用来提高性能。 函数 防抖 关注一段时间内连续触发,只在最后一次执行;而函数 节流 侧重于在一段时间内只执行一次。 应用:www.zoo.team/article/ant…

return break continue 的区别:

  1. return :直接跳出当前的方法,返回到该调用的方法的语句处,继续执行
  2. break:在循环体内结束整个循环过程
  3. continue :结束本次的循环,直接进行下一次的循环

浏览器事件循环机制

JavaScript 单线程中的任务分为同步任务和异步任务。同步任务会在调用栈中按照顺序排队等待主线程执行,而异步任务则会放入任务队列中等待主线程中任务执行完毕再执行。 主线程中同步任务都执行完毕,这个时候就会去任务队列中按照顺序读取一个任务放入到栈中执行。每次执行完一个任务后都会去读取任务队列有没有任务,有就读取执行,一直循环读取-执行的操作,就形成了事件循环。

实现Array.flat

1.递归

const arr = [1,2,[3,4],[5,6]]
let result = [];
function flat(ary) {
  ary.forEach(item => {
    if(Array.isArray(item)){
      flat(item)
    } else {
      result.push(item)
    }
  })
}

flat()

浏览器重排与重绘