javascript和其他编程语言一样, 代码的写法和算法会影响运行时间。与其他语言不同的是,javascript可用资源有限,因此优化技术更为重要。
ECMA-262标准第三版定义了javascript的基本语言和行为,其中有四种循环类型,
第一种是标准for循环,与其他类C语言的语法相同:
for ( var i = 0 ; i < 10 ; i ++ ){ //循环主体 }
第二种是循环类型是while循环:
var i = 0 ;
while(i < 10){ // 循环主体 i ++;}
第三种是循环类型是do-while循环:
var i = 0 ;
do{
// 循环主体
}while(i ++ < 10);
第四种是循环类型是 for-in 循环:
for(var prop in object){
// 循环主体
}
for-in 循环体每次运行时,prop变量被赋值为object的一个属性名(字符串),直到所有属性遍历完成才返回。所返回的属性包括对象实例属性以及从原型链中继承而来的属性。
小结:
1.for,while 和 do-while循环性能特性相当,并没有一种循环类型明显快于或慢于其他类型。
2.避免使用for-in循环,除非你需要遍历一个属性数量位置的对象。
3.改善循环性能的最佳方式是减少每次迭代的运算量和减少循环迭代次数。
4.通常来说,switch总是比if-else快,单并不总是最佳解决方案。
5.在判断条件较多时,使用查找表比if-else和switch更快。
6.浏览器的调用栈大小限制了递归算法在javascript中的应用;栈溢出错误会导致其他代码终端运行。
7.如果你遇到栈溢出错误,可将方法改为迭代算法,或使用Memoization来避免重复计算。
运行的代码数量越大,使用这些策略所带来的性能提升也就越明显!
网友评论