《JavaScript 高级程序设计》阅读笔记 1:最佳实践

  • 2019 年 11 月 7 日
  • 筆記

可维护性

可维护性包括:可理解性、直观性、可适应性、可扩展性和可调试性

代码约定:

  • 可读性(缩进、注释);
  • 变量和函数命名(有意义的命名);
  • 变量类型透明(var a =null var a = iSpeed

松散耦合:

  • HTML 或者 CSS 与 JavaScript 的解耦(如 CSS 仍然保留样式信息,通过改变类名来改变样式);
  • 事件监听器和应用逻辑的解耦(监听器只发挥监听作用,而将应用逻辑独立成可以复用的函数)

编程实践:

  • 尊重对象所有权(尽量不要改动原生对象);
  • 尽量避免创建全局变量和函数;
  • 避免与 null 比较
  • 使用常量

性能优化

  • 优先使用局部变量。根据作用域链查找的原理,访问全局变量速度会较慢
  • 避免 with 语句。会延长作用域链长度
  • 避免多次的属性查找。属性查找涉及原型链的追溯,花费时间长
  • 优化循环:减值迭代、简化终止条件、简化循环体、使用 do...while...、展开循环
  • 使用数组字面量和对象字面量
  • 最小化现场更新。对于已经加载出来的 dom 的直接操作(现场更新)会影响性能,可以考虑在新建的 fragment 文档片段中进行修改,之后只进行一次现场更新。
  • innnerHTML 比普通的创建 dom 节点的方法更快
  • 同胞节点有相同的事件时利用事件委托冒泡给父节点,父节点的事件监听器里结合 switch 进行 event.target 判断
  • 访问 HTMLCollection 的属性或者方法时,都是在文档上进行查询,这个过程会有性能开销,应该最小化访问 HTMLCollection 的次数。例如可以将 for 循环的终止条件判断保存在一个值里,而不是每次都重新计算一次。