Skip to content

2023.2.13 CVTE一面

先聊项目 - 遇到什么难点怎么解决 x2

  1. CSS盒模型
  2. 怪异盒模型和普通盒模型区别
  3. ES6 常用api - Map和Set
  4. let const var
  5. 作用域和上下文的理解
  6. 闭包优缺点, 使用场景
  7. 防抖实现思路
  8. 说说事件循环 第一轮产生的微任务会在下一轮执行还是什么时候执行
  9. http1.1 和 http2 区别
  10. 怎么开启http2,后端服务器需要配置吗
  11. 说说http2 多路复用
  12. v-for key 的作用
  13. 除了 key 还有什么需要比较
  14. 说说 diff 算法大概流程
  15. vue 和 react 区别
  16. 手写
js
function compose(fnOrArg, args) {

}
function f1(args) {
  return args.map((a) => a * 1);
}

function f2(args) {
  return args.map((a) => a * 2);
}

function f3(args) {
  return args.map((a) => a * 3);
}

function f4(args) {
  return args.map((a) => a + 3);
}

compose(f1)(f2)(f3)(f4)([1, 2, 3]) // 9,15,21

👇 并不是具体的柯里化/函数组合 而是结合对应的 闭包暂存思路/把值传递遍历执行思路 实现

js
function compose(fn) {
  const arr = [fn] // 暂存函数
  return function temp(fnOrArg) {
    if(typeof fnOrArg === 'function') {
      arr.push(fnOrArg)
      return temp
    } else {
      // 执行函数
      const res = arr.reduce((val, fn)=>{
        return fn(val)
      }, fnOrArg)
      return res
    }
  }
}