JavaScript for-loop替代方法:repeat(n,function(i){...});

Šim*_*das 6 javascript jquery loops

这是常规for循环:

for (var i = 0; i < n; i++) { ... }
Run Code Online (Sandbox Code Playgroud)

它用于迭代数组,但也只是重复一些处理n时间.

我使用上面提到的形式,但它击退了我.标题var i = 0; i < n; i++很简单,每次使用时都必须按字面重写.

我正在写这个问题,因为我提出了一个替代方案:

repeat(n, function(i) { ... });
Run Code Online (Sandbox Code Playgroud)

这里我们使用 带有repeat两个参数的函数:
1.迭代次数,
2.一个函数,该函数代表正在重复的过程.

"代码隐藏"就像这样:

function repeat(n, f) {
    for (var i = 0; i < n; i++) {
        f(i);
    }
} 
Run Code Online (Sandbox Code Playgroud)

(我知道在流程的范围链中有两个额外的"级别"的性能影响)

顺便说一句,对于那些使用jQuery库的人来说,上面提到的功能可以通过如下$.each方法实现:

$.each(Array(n), function(i) { ... });  
Run Code Online (Sandbox Code Playgroud)

所以你怎么看?此repeat函数是native for循环的有效替代吗?这个替代方案的缺点是什么(性能除外 - 我知道这个)?

本机:

for (var i = 0; i < 10; i++) {
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

替代方案:

repeat(10, function(i) {
    // do stuff
});
Run Code Online (Sandbox Code Playgroud)

Gon*_*lde 10

你说你想要一场革命......嗯,你知道吗:ruby就在之前做过(?)

Number.prototype.times = function(func) { 
    for(var i = 0; i < Number(this); i++) {
        func(i); 
    }
}
Run Code Online (Sandbox Code Playgroud)

手段

(50).times(function(i) {
    console.log(i)
})
Run Code Online (Sandbox Code Playgroud)

无论如何,不​​要与C作斗争,你总会失败:-P


Jef*_*eff 5

这是一个有趣的想法,但如果你不喜欢循环的语法,你总是可以做一个不同类型的循环:

var i = arr.length; 
while (i--) {
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

反向while循环通常也比for循环快.