Javascript 对于这些$each循环,什么更快/更高效/更好?

Javascript 对于这些$each循环,什么更快/更高效/更好?,javascript,jquery,performance,Javascript,Jquery,Performance,我有一个Javascript对象,如下所示: var a = { b: [1,2,3,4,5,6,7,8,9], c: [10,11,12,13,14,15] } 要在两个数组中循环(我想循环每个值!),我使用$。每个,但我可以这样做: // Option A: $.each(a, function(i, d){ $.each(d, function(j, e){ console.log(e); } }); 还是这个 // Option B: $.each(a.b,

我有一个Javascript对象,如下所示:

var a = {
  b: [1,2,3,4,5,6,7,8,9],
  c: [10,11,12,13,14,15]
}
要在两个数组中循环(我想循环每个值!),我使用
$。每个
,但我可以这样做:

// Option A:
$.each(a, function(i, d){
  $.each(d, function(j, e){
    console.log(e);
  }
});
还是这个

// Option B:
$.each(a.b, function(k, f){
  console.log(f)
})

$.each(a.c, function(l, g){
  console.log(g)
})
两者产生的输出完全相同,但这两个版本中哪一个更快/更高效/更好

有什么区别吗


或者有没有更快/更有效/更好的方法(没有
$。每个
)?

最有效的方法是使用一个简单的本地
for
循环。根本不要使用jQuery。

如果您真正关心的是速度,那么就使用javascript自己的for循环。 对于你的答案,我认为选项b会更快

没有什么能比得上:

var i=0, arr=a.b, len=arr.length;   
for(; i<len; i++ ) { console.log(arr[i]) } ;
var i=0,arr=a.b,len=arr.length;

for(;i使用某种类型的
每一个
总是比for循环慢,这是不对的。SM和V8可以很好地进行内联
只要您没有为他们破坏它,就可以运行利用这一事实的自定义实现

话虽如此,jQuery
$。每个
都没有利用这一事实,而且速度很慢。避免在性能敏感的情况下使用

至于你的问题,我希望第二个在JIT中会稍微快一点,因为它避免了反射,并且使用了每个现代引擎都能利用的静态属性访问


+1.OP-如果你真的想看到性能的差异,我明白了,
for
循环更快。但是当涉及到
for
内部
for
循环时,这并没有改变任何东西。此外,我知道我可以测试自己,但如果有人已经知道答案,那就不需要测试了吗?@GerardWesterhof<代码< > <代码>(或<代码> )要比<代码>前文快,<<代码> <代码> > <>代码> > <<代码>前缀 >内<代码>前缀。但是,你需要考虑变量名冲突(除非你有<代码>让对你可用).我感觉这个问题以前已经被回答过了…“没有什么能打败”,现在不是真的了,是吗?:-)好的,jsperf链接表明基本的for循环已经走在前面了。我的意思是,任何构建在基本for循环之上的构造都会变慢。是的,构建在for循环之上的东西会变慢,但是当你说“无”时,你必须小心:P
sum=0;总和+=1;总和+=2;总和+=3etc会更快。。具体来说,
(n*(n+1))/2
会更快。