为什么Javascript的每种方法都被制服了?

时间:2018-04-12 18:22:29

标签: javascript arrays performance loops benchmarking

我已经制定了基准来检查几种迭代数组的方法的性能。

https://jsperf.com/extended-array-loops-performance

有人可以解释为什么every方法如此强大吗?它比任何其他方法快90%以上,甚至比那些类似的方法更加奇怪

1 个答案:

答案 0 :(得分:6)

因为你只运行一次。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <ul> <li class="menu"><a href="#">link 1</a> <ul class="submenu"> <li><a href="#">inlink 1</a></li> <li><a href="#">inlink 2</a></li> </ul> </li> <li class="menu"><a href="#">link 2</a> <ul class="submenu"> <li><a href="#">inlink 1</a></li> <li><a href="#">inlink 2</a></li> </ul> </li> </ul>将循环遍历元素,直到找到falsey值,此时它将返回。

由于您的基准测试不会返回任何内容,因此every()undefined,因此它只运行一次。所有其他循环都会遍历所有元素。

将您的测试更改为:

falsey

它应与其他人保持一致。