《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 循环的终止条件判断保存在一个值里,而不是每次都重新计算一次。