32

186 阅读1分钟

js

基础

1. call,apply,bind

2. 柯里化

    /**
   * 将函数柯里化
   * @param fn    待柯里化的原函数
   * @param len   所需的参数个数,默认为原函数的形参个数
   */
  function curry(fn, len = fn.length) {
    return _curry.call(this, fn, len);
  }

  /**
   * 中转函数
   * @param fn    待柯里化的原函数
   * @param len   所需的参数个数
   * @param args  已接收的参数列表
   */
  function _curry(fn, len, ...args) {
    return function(...params) {
      let _args = [...args, ...params];
      if (_args.length >= len) {
        return fn.apply(this, _args);
      } else {
        return _curry.call(this, fn, len, ..._args);
      }
    };
  }

  let _fn = curry(function(a, b, c, d, e) {
    console.log(a, b, c, d, e);
  });

  _fn(1, 2, 3, 4, 5); // print: 1,2,3,4,5
  _fn(1)(2)(3, 4, 5); // print: 1,2,3,4,5
  _fn(1, 2)(3, 4)(5); // print: 1,2,3,4,5
  _fn(1)(2)(3)(4)(5); // print: 1,2,3,4,5

css

算法

项目

  1. 微前端
  2. 组件库
  3. 一次错误排查
  4. 低代码平台

参考链接

题目