跟着月影大佬学习js系列1

140 阅读1分钟

跟着月影大佬学习js系列

书籍推荐

犀牛树,红宝书

原则

各司其职
组件封装
过程抽象

结论

  • HTML/CSS/JS各司其责
  • 应当避免不必要的由JS直接操作样式
  • 可以用class来表示状态
  • 纯展示类交互寻求零代码JS方案

高阶函数

HOF

  • 以函数作为参数
  • 以函数作为返回值
  • 常用于作为函数装饰器

  function HOF0(fn) {
    return function(...args) {
      return fn.apply(this, args);
    }
  }

22

常用高阶函数

HOF

  function HOF0(fn) {
    return function(...args) {
      return fn.apply(this, args);
    }
  }
JavaScipt the good parts

image-20220923101611603.png

上面这段代码没有使用循环,是直接一个个表示。
  • 如果你的代码是性能敏感的,可以采用这样的方式。做渲染,希望努力达到60帧,基于这个原因没有用循环。
  • 如果你评判一个代码,你不能单纯因为风格去评判,最终还是要在使用场景中去评判。

当年的Leftpad 事件

原版代码:

​
function leftpad(str ,len,ch){
    str=String(str)
    var i=-1;
    if(!ch&&ch!==0)ch=' ';
    len =len-str.length;
    while(++i<len)
        {
            str=ch+str;
        }
    return str;
}

有人吐槽

  • NPM 模块粒度
  • 代码风格
  • 代码效率/质量
function leftpad(str,len,ch)
{
    str=""+str;
    const padlen=len-str.length;
    if(!padlen<=0)
        {
return str;
        }
    return (""+ch).repeat(padlen)+str;
    
}

leftpad2.png

整个来看,leftpad我们可以有很多性能优化,但是实际上那一点的性能提升其实可以忽略不记,我们还是可以从代码可读性来多考虑。