Kon*_*ten 7 javascript performance foreach for-loop
我无法决定是否应该使用$ .each(array,function(){...})或array.ForEach(...)或其他内容.所以我打电话给谷歌给了我这个链接,如果它可靠的话就太棒了.
据此,不同方法之间的速度差异很大.而且,通常,for -loop似乎是优选的.
我不是JavaScript的大师,所以我想从一些精通JS的成员那里得到一些意见.
Ben*_*aum 14
可能是原生的循环(好吧,除了歌剧之外的所有地方,其中foreach更快,但那是另一个故事).
然而,99.9%的情况确实无关紧要.
如果可以,总是更喜欢可读代码而不是更快的代码 所有这些类型的循环可以在普通机器上每秒处理数十万次迭代.
可读代码在这里更为重要 - 如果$.each超过100个元素对您来说更具可读性 - 通过各种方式做到这一点(我个人通常更喜欢Array.forEach,主要是因为它是本机的并且与本机一致.map .filter .reduce等等).如果你在循环中执行大量工作,差异会变得更小.
假设您有一个名为doSomethingWithCurrent的方法:
for(var i=0;i<elements.length;i++){
   var current = elements[i];
   doSomethingWithCurrent(current);
}
VS:
elements.forEach(doSomethingWithCurrent);
第二个可能更慢,但它也更可读(至少对我而言)使其更易于维护.
以下场景如何 - 您有一个具有名字和姓氏的对象数组,并且您想要创建一个包含全名的新字符串数组:
平环:
var new = [];
for(var i=0;i<names.length;i++){
    new.push(names[i].firstName+" "+names[i].lastName);
}
使用地图:
var new = names.map(function(elem){ 
    return elem.firstName+" "+elem.lastName;
});
再次,我发现第二个更可读,即使它更慢.编写可维护和可读的代码通常比编写快速代码更重要.
也就是说,"更具可读性"往往是个人品味的问题,保持一致非常重要.
对于沙漠 - 有一些Knuth:
程序员浪费了大量时间来思考或担心程序中非关键部分的速度,而这些效率尝试实际上在考虑调试和维护时会产生很大的负面影响.我们应该忘记小的效率,大约97%的时间说:过早的优化是所有邪恶的根源.然而,我们不应该放弃那个关键的3%的机会.
将Jquery循环与javascript循环进行比较时,您需要记住Jquery是使用javascript实现的.
所有Jquery函数最终都会运行标准的javascript代码.
因此,这意味着在大多数情况下,原生javascript将更有效.
我最喜欢的速度循环是:
for(var i, ilen = MAXLENGTH; i < ilen; i++){
}
这是除非在这种情况下迭代javascript对象:
for(var key in object){
     if(object.hasOwnProperty(key)){
     }
}
在将Jquery与javascript进行比较时,这代表了大多数用例.
$('#elementid'); 
比...慢得多
$(document.getElementById('elementId'));
以及许多其他例子.
Jquery可用于使代码看起来更清晰,或者用于版本2之前的跨浏览器兼容性.
但是在高性能情况下,如果您可以保证只需要支持现代浏览器,则javascript通常会更快.
| 归档时间: | 
 | 
| 查看次数: | 2785 次 | 
| 最近记录: |