您的位置:首页 > Web前端 > JavaScript

JS for与for in对比(包含性能测试)

2016-05-31 19:44 471 查看
测试事例(性能对比):
     终端前面部分是没有加入红框中的代码 



如上图, 明显for循环比for in 性能高很多(原因是因为for通过number遍历,for in 则是穷举所有索引)

其实for 与 for in 还有其它区别:
1、for中的i是number类型,for in中的 key是string类型;
2、如果扩展了js 的原生Array,for in 会将其遍历,出现错误结果;
3、如果遍历js对象,需要用for in。 

测试代码:
var s,d;
var arr = [];
for (var index = 0, len = 10000000; index<len; index++) {
arr.push(index);
}
//Array.prototype.test=function(){
//
//};
function forSum(arr) {
var i = 0,
sum = 0,
l = arr.length;
for (; i<l; i++) {
if (i == 0){
console.log(typeof i);
}
sum += arr[i];
}
}
function forInSum(arr){
var sum = 0;
for (var key in arr){
if (key == 0){
console.log(typeof key);
}
sum += arr[key];
}
}
function performanceTest(func,param){
s = new Date().getTime();
func(param);
d = new Date().getTime();
console.log((d-s).toString());
}
performanceTest(forSum,arr);
performanceTest(forInSum,arr);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript 性能测试