JS序列遍历基本上是for、forin、foreach、forof、map等几种方法,本文介绍几种用于分析的序列遍历方式和轮廓比较
第一个:普通for循环
代码为以下:
for(j=0; j arr.length; j ) {
}
简要说明:
是最简单的,使用频率最高的,性能不弱,但还有优化的余地
第二类:优化版for循环
代码为以下:
for(j=0,len=arr.length; j len; j ) {
}
简要说明:
如果使用临时变量缓存长度以避免重复获取数组的长度,则优化在数组较大时效果会更明显。
该方法基本上是所有循环遍历方法中性能最高的
第三个:弱化版for循环
代码为以下:
for(j=0; arr[j]!=null; j ) {
}
简要说明:
这种方法实际上也是for循环,不使用length判断,只不过是使用变量本身进行判断
实际上,该方法的性能远远小于常规的for循环
第四个:福雷循环
代码为以下:
arr.foreach (功能(item,index ) {
//索引怎么样
//item可以是对象
//item.name
);
简要说明:
数组附带的foreach循环使用频率高,实际上性能比普通的for循环弱
第五种:foreach变种
代码为以下:
array.prototype.foreach.call (arr,function ) El ) )。
);
简要说明:
由于foreach是Array类型的附带品种,不能直接用于非这种类型的品种(例如NodeList ),因此出现了这种变种。 使用此变种,可以使类似的数组具有foreach功能。
实际性能比普通的foreach弱
第六类:福克斯循环
代码为以下:
for(jinarr ) {
//j表示索引
}
Paste_Image.png
简要说明:
这个循环很多人都喜欢用,但实际上,经过分析测试,在很多循环扫描方式中
其效率最低
第七类:map遍历
代码为以下:
arr.map (功能(item ) {
);
Paste_Image.png
简要说明:
这种方式也比较广泛,用于优雅,但实际效率比不上foreach
第8类:forof扫描(需要ES6支持) ) ) ) ) ) ) ) )。
代码为以下:
for(letvalueofarr ) {
//打印的是值
);
Paste_Image.png
简要说明:
这种方式在es6中使用,性能比forin好,但仍然比不上普通的for循环