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);
终端前面部分是没有加入红框中的代码
如上图, 明显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);
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- Java IO与NIO的一些文件拷贝测试
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子
- JavaScript 各种遍历方式详解