这是常规的for循环:
for (var i = 0; i < n; i++) { ... }
它用于迭代数组,但也可以重复某个过程n
次。
我使用上述形式,但它让我感到厌恶。标题var i = 0; i < n; i++
非常丑陋,每次使用时都必须重新编写。
我写这篇文章是因为我想出了一种替代方法:
repeat(n, function(i) { ... });
在这里,我们使用repeat
函数,它需要两个参数:
1. 迭代次数
2. 函数体代表正在重复的过程。
"代码后台"看起来像这样:
function repeat(n, f) {
for (var i = 0; i < n; i++) {
f(i);
}
}
我知道在处理过程中添加两个额外的“级别”会对性能产生影响。
顺便说一句,对于那些使用jQuery库的人,可以通过$.each
方法直接实现上述功能,如下所示:
$.each(Array(n), function(i) { ... });
那么你认为呢?这个repeat
函数是原生for循环的有效替代品吗?除了性能问题(我知道这点),还有哪些缺点呢?
原生:
for (var i = 0; i < 10; i++) {
// do stuff
}
备选方案:
repeat(10, function(i) {
// do stuff
});
i
变量不会混乱你的作用域。除此之外,我只能说“嗯”。 :) - deceze