一.最快的条件判断
if语句的适用场景
2个之内的离散值需要判断
大量的值能容易的分到不同的区间范围中
switch语句的适用场景
超过2个少于10个离散值需要判断
条件值是非线性的,无法分离出区间范围
数组查询的适用场景
超过10个值需要判断
条件对应的结果是单一值,而不是一系列操作
二.字符串操作
字符串连接
现代浏览器已经对字符串做了优化,如果字符串较短(少于20个字符)且数量较少(少于1000个),所有浏览器都能用+
运算符在1ms内完成
所以,用push + join
优化字符串连接已经没有必要了,在大多数场景下,直接+
就好了
裁剪字符串
ES5提供了原生的trim
,如果环境中没有,可以使用下面这个最快的trim
实现:
function trim(text) {
text = text.replace(/^\s+/, '');
for (var i = text.length - 1; i >= 0; i--) {
if (/\S/.test(text.charAt(i))) {
text = text.substring(0, i + 1);
break;
}
}
return text;
}
或者一个不快但更简单的版本:
function trim(text) {
return text.replace(/^\s+/, '').replace(/\s+$/, '');
}
三.数据存取
保证效率的原则如下:
用局部变量缓存需要频繁存取的值
比如arr.length,DOMNode List
缩短作用域链
除了
with
之外,try-catch
的catch
也会增长作用域链(在作用域链顶部增加了一个对象,该对象包含了异常对象),所以尽量不要在catch
块里包含太多的代码,以降低性能影响
参考资料
- 《高性能网站建设进阶指南》