- 网上总是在鄙视for循环,太low拉,怎么怎么样。用forEach,filter,map。。。。。等等。
- 但是for循环效率真的就低吗?(为了装逼而装逼)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
var testArrs = [],
i = 0;
while (i < 40000000) {
testArrs.push(i);
i++;
}
function testForeach(testArrs) {
console.time('foreach');
var newArrs = [];
testArrs.forEach(function(i) {
newArrs.push(i);
});
console.timeEnd('foreach');
}
function testMap(testArrs) {
console.time('map');
var newArrs = [];
testArrs.map(function(i) {
newArrs.push(i);
});
console.timeEnd('map');
}
function testFilter(testArrs) {
console.time('filter');
var newArrs = [];
testArrs.filter(function(i) {
newArrs.push(i);
});
console.timeEnd('filter');
}
function testNoDeclare(testArrs) {
console.time('no declare');
var newArrs = [];
for (var i = 0; i < testArrs.length; i++) {
newArrs.push(i);
}
console.timeEnd('no declare');
}
function testUseDeclare(testArrs) {
console.time('use declare');
var newArrs = [];
for (var i = 0, len = testArrs.length; i < len; i++) {
newArrs.push(i);
}
console.timeEnd('use declare');
}
// testForeach(testArrs);
// 2018.450927734375ms 1985.9140625ms 1993.22216796875ms 1873.22900390625ms
//testNoDeclare(testArrs);
//1044.173828125ms 1063.7919921875ms 1112.626220703125ms 1094.291259765625ms
//testUseDeclare(testArrs);
//1107.72705078125ms 1071.324951171875ms 1079.0400390625ms 1142.242919921875ms
//testMap(testArrs)
//2178.06494140625ms 2192.51220703125ms 2281.215087890625ms 2251.512939453125ms
testFilter(testArrs)
//1827.462890625ms 1956.22412109375ms 1812.953857421875ms 1854.65869140625ms
</script>
</body>
</html>
-
本次实验,分别注释函数,然后相同条件下刷新页面4次获取数据。
-
先不论几种循环的作用、场景,单看循环的效率来说,其实for 循环效率还是蛮高的。(
最少for循环和foreach循环比较来说,for循环效率更高
)
网友评论