编写高效的js

管理作用域

流控制

快速条件判断

1 .大量的if-else和switch的选择
2 .将条件按照频率降序排列,哈夫曼编码的原理
3 .优化if的判断条件,按照二分法的原则。可以逐渐提取出有效的条件,最大化的减少判断的次数
4 .一旦超过四环,那么就需要使用switch语句
5 .switch简化了多重条件判断的结构,提升了性能。其他语言的编译器是对这个语法有优化的,但是js的速度是差不多的。

循环性能的提升

1 .for ,while, do-while
2 .使用局部变量来代替属性查找来加快执行效率
3 .将循环变量递减到0,而不是递增到总长度,根据每个循环复杂性不同,可以比原来节约多达50%。
4 .在一些变成语言中,习惯的做法是展开小循环来提高性能,这一做法的基础是通过限制循环的次数来减少循环的开销
5 .处理大数组的方法:duff策略.每一次循环完成之前的8次

避免运行事件过长的脚本

1 .由于是单线程的,任意一个时间段内,每个窗口或者标签页中只能执行一个脚本。这就意味着在js代码执行的时候,所有的用户操作必然被中断。因为js在执行的过程中可能会改变页面的底层结构,所以有可能取消或者改版用户交互响应的结果。
2 .不同的浏览器对终止脚本的判断是不一样的,有的是看脚本的运行总时间,有的是看执行语句数量的最大值,有的是当内存不足的时候进行终止
3 .常见脚本执行事件过长的原因
3.1 .太多的dom操作:大多数的浏览器只会等待脚本执行完成之后才会更新dom
3.2 .太多的循环:尽可能的将功能分解有助于缓解这个问题
3.3 .太多的递归:js引擎限制了脚本的可递归次数,改写代码来避免递归可以缓解这个问题
4 .使用定时器挂起操作:当脚本需要花太多的时间来完成执行的时候,使用定时器来拆分执行js是常用的方法。延迟50-100ms是最合适的选择,太长和太短都没有意义
5 .处理数组是引起脚本长时间运行的常见原因之一。通常可以使用定时器拆分。

你可能感兴趣的:(编写高效的js)