日期:2013-11-27  浏览次数:21042 次

网页制造aiyiweb文章简介:结束语:在测试过程中发现非IE浏览器下,优化后和优化前的效率差距并不是很大,甚至可以忽略,这说明这些浏览器的JS引擎对循环做了很好的优化,对开发者是非常敌对的表现,无法IE6、7、8下差距很明显,但这符合我们预期。因此,赶快对JS代码中的对循环进行优化吧!

循环是大多数编程言语都具备的基本功用,JS也不例外,不同之处在于JS是解释型言语,运转于浏览器环境中,客户端的软硬件条件会对JS执行效率产生很大的影响。然而客户端环境对于开发者是未知、多样的,并且难以改变,所以优化代码质量是提高代码效率的次要途径。
JS代码中,循环是比较容易导致功用问题的要素。理解循环特性进而有针对性地进行优化也许会带来不错的功用提升。

for、while、do-while循环:
这三种循环本身的循环效率相差不多,所以只需依据适合的使用场景选择即可。
以for循环为例:

var aValues = ["a", "b", "c", "d"];
for(var i = 0; i < aValues.length; i += 1){
fDoSomethingA(aValues[i]);
fDoSomethingA(aValues[i]);
}

上面例子中每次循环都要比较i与数组的长度,所以每次都要重新读取数组长度,由如果数组长度在循环中是不变的,这样做就没有必要,我们可以使用局部变量代替length的读取。同理,例子中,aValues[i]由于被读取两次以上,我们也可以将它赋值给局部变量:

var aValues = ["a", "b", "c", "d"], nLength = aValues.length;
for(var i = 0, sValue; i < nLength; i += 1){
sValue = aValues[i];
fDoSomethingA(sValue);
fDoSomethingB(sValue);
}

如果循环的业务逻辑对循环顺序不敏感,可以尝试倒序循环,即将计数器递减到0。

var aValues