分享说明:

1. 我先申明,我只是茫茫WEB前端开发人员中的一名普通的js程序员,我收集的和总结的代码未必就一定是性能最好的,可能会是性能最差的,希望看到这篇博客的朋友能够对我的错误进行批评指正。

2. 随着代码效率的提升,难免可读性降低,因此使用还是应该多多权衡。

 

谢谢!

 

一、条件判断类(以下的a都默认是boolean类型):

1. 常规代码

 


if(a) { b = 'a是true'; } else { b = 'a是false'; }


2. 三元运算符


b = a ? 'a是true':'a是false';


3. 个人觉得性能最优代码

b = a && 'a是true' || 'a是false';

二、 数组的连接(a和b均为数组)

1. 使用concat方法

a.concat(b)

2. 使用循环push(性能应该最差,不写具体代码了,估计没有人这么干)

3. 使用栈方法push(此方法性能最高,若有兴趣可以测试看看)

Array.prototype.push.apply(a, b);

三、 对于确定类型并且确定值的判断(a和b均是js变量),比如:keydown事件中的keyCode的比较

1. 使用等号==(该表达式会默认对类型进行转换)

a == b

2. 使用全等运算符===(该表达式不会进行类型转换,直接看类型,若不同类型返回false,否则比较值是否相等)

a === b

四、 字符串连接(当一次会进行很多次循环操作的时候)

1. 使用+连接,由于每次都会在连接的时候创建另一个字符串对象,因此性能较低(目前某些浏览器进行了优化,但是对于IE浏览器,性能依旧很低);

 

var a = '', b = 10000; while( b-- > 0) { a += '我是第' + (10000 – b) + '次操作\r\n'; }


2. 在循环中将字符串添加到一个数组中,循环结束后使用数组的join方法,这样就不会在每次字符串连接的过程中创建另一个临时对象,因此性能显著提升。

 


var a = [], b = 10000; while( b-- > 0) { a.push('我是第', 10000-b, '次操作\r\n'); }




五、 取整运算,已知a为数字类型

1. 常规方法


Math.floor(a)


2. 两次取反(该方法必须先确定a为数字类型,否则运行时会报错,不会返回NaN)

~~a