浅析js -- 之for 与forEach循环
亲测总结:
- 当数组长度 为 100000时,偶尔能刷出时间相等
- 当数组长度 小于 100000时,差距不明显,for 与 forEach 谁快谁慢不一定
- 当数组长度 大于 100000时,明显for 要快于forEach
forEach
- forEach无法遍历对象
- forEach无法在IE中使用,只是在firefox和chrome中实现了该方法
- forEach无法使用break,continue跳出循环,使用return时,效果和在for循环中使用continue一致
总结:
- for in , $.each , $().each 既支持对象也支持数组遍历;
- for , do/while , forEach 只支持数组;
- Array.prototype.map, Array.prototype.every 只支持数组和形似数组的对象;
- forEach不能退出循环,只能通过return来进入到下一个元素的遍历中(相当于for循环的continue), 且在IE没有实现该方法;
- $.each和$().each循环只能通过return false 来退出循环, 使用return 或 return true 将跳过一个元素, 继续执行后面的循环.
for...of
循环可以使用的范围包括数组、Set 和 Map 结构、某些类似数组的对象(比如arguments
对象、DOM NodeList 对象)、后文的 Generator 对象,以及字符串。
各时间用的时间大概顺序:
ffor ~= do while < forEach ~= map ~= every < $.each < $(e).each < for in
根据统计数据, 可得这8个方法的运行速度大致排序为:
- for 与 do while
- forEach map every (这3个不相上下,可认为运行速度差不多)
- $.each
- $(e).each
- for in
github地址(亲测):https://caraxiong.github.io/js-demo/tpls/knowledge/for.html
如若喜欢,欢迎转载,请在文章页面明显位置给出此文链接!
若您觉得这篇文章还不错请点击下右下角的推荐,有了您的支持才能激发作者更大的写作热情,非常感谢!