【发布时间】:2012-01-13 23:30:05
【问题描述】:
我跑了some tests,数据点jQueryinArray()比简单循环慢很多。
而array.indexOf() 甚至不在测试中,因为我之前做过其他测试,而且它的表现更差。
- 为什么会慢很多?
- 他们为什么不使用简单的循环?
- 我有什么要监督的吗?
不使用它一定有充分的理由:
for(var i=0,len=arr.length,rtn=-1;i<len;i++){
if(arr[i]==="arritem"){
rtn=i;
break;
}
}
【问题讨论】:
-
来自您的 jsperf 测试:
return array.indexOf.call( array, elem, i );???为什么不return array.indexOf(elem, i);?为什么额外的层会通过call? -
@T.J.Crowder 我以为 jQuery 正在使用它,我从stackoverflow.com/a/8856637/1148349复制了它
-
@mithril333221 好像是,code.jquery.com/jquery-1.7.1.js
-
如果您的目标是测试 jQuery 的
inArray,为什么不测试 jQuery 的inArray?您可以在 jsperf 测试中包含库。 -
@ajax333221:不,这不完全一样。在 jQuery 源代码中,它引用
indexOf(一个免费符号);在 OP 的测试用例中,它引用了array.indexOf(array的属性)。
标签: javascript jquery performance loops