虽然缺点!未定义的数组循环

时间:2012-06-18 20:30:08

标签: javascript

根据this JSPerf而来!在所有浏览器中,未定义的样式数组循环快约10倍。这种循环风格有哪些缺点?

4 个答案:

答案 0 :(得分:1)

正如您所看到的,我们谈论的速度是每秒数百万次操作的速度快10倍/更慢,这并不足以让人担心。

这种风格的一个可能的缺点是对其他开发人员的可读性,这比“性能提升”更重要。

判断自己,什么更具可读性?

// Chrome 21: 5M operations per second
var a;
while ((a = arr[i++]) !== undefined) {
    someFn(a);
}

// Chrome 21: 324k operations per second
for (var i = 0; i < arr.length; i++) {
    someFn(arr[i]);
}

答案 1 :(得分:1)

它实际上是测试用例中的一个错误,迭代器没有被重置为每次测试运行的零(即,只有第一次测试运行滚动完整循环,下一次运行时迭代器已经超过了数组的末尾因此滚零次)。请参阅corrected test suite了解真正的基准。

(注意:我没有检查过所有测试用例,其他测试用例也可能存在缺陷)

答案 2 :(得分:0)

我能看到的主要缺点是你无法摆脱循环!你很快就会遇到没有反应的用户界面。

答案 3 :(得分:0)

缺点: 1.如果a [i]已被使用,则不再是未定义的。因此,您可能做的比预期更多。 2.可读性,很难知道终点(除非你提出一些意见;) 没别的。

新修订版仍然没有那么大的差别,但是如果它的速度你需要那么评论很好并且测试得很好。

如果你的功能“someFn(a);”有一个超过这些测试的计时器然后我建议测试你自己的循环,如果它是那么重要。

如果不总是坚持整洁的编码。