不使用javascript循环多次执行命令

不使用javascript循环多次执行命令,javascript,Javascript,是否有一个函数,我可以使用它多次执行命令 alert('hi'); alert('hi'); alert('hi'); 这样我就可以不用再重复了 有没有办法通过预设功能来消除冗余?预设功能只是一个循环,以一种或另一种形式出现。您可以使用Coffeescript的理解: alert('hi') for num in [1..10] 但这仍然是一个循环:) 有些语言,比如Ruby,有一个类似 10.times do { puts 'hi' } 不幸的是,JS中没有相同的功能。Javascri

是否有一个函数,我可以使用它多次执行命令

alert('hi');
alert('hi');
alert('hi');
这样我就可以不用再重复了


有没有办法通过预设功能来消除冗余?

预设功能只是一个循环,以一种或另一种形式出现。您可以使用Coffeescript的理解:

alert('hi') for num in [1..10]

但这仍然是一个循环:)

有些语言,比如Ruby,有一个类似

10.times do { puts 'hi' }

不幸的是,JS中没有相同的功能。

Javascript语言中没有内置的东西可以让您多次重复一个函数,但您可以轻松创建一个函数来完成这一任务:

function execMultiple(fn, num, /* args */) {
    // make copy of the args without the first two items
    var args = Array.prototype.slice.call(arguments, 2);
    for (var i = 0; i < num; i++) {
        fn.apply(this, args);
    }
}

execMultiple(alert, 3, 'hi');
函数execMultiple(fn,num,/*args*/){
//复制不带前两项的参数
var args=Array.prototype.slice.call(参数,2);
对于(变量i=0;i

或者,您可以要求传入已包含args的存根函数:

function execN(fn, n) {
    for (var i = 0; i < n; i++) {
        fn();
    }
}

execN(function() {
    alert('hi');
}, 3);
函数执行器(fn,n){
对于(变量i=0;i
使用下划线.js()(),可以使用times():


循环是最好的选择,你为什么不想使用它们呢?@danielR好吧,如果有更有效的方法,为什么不呢?如果你使用人们不知道的更隐晦的东西而不是循环,你的代码可读性就会降低。谢谢,但它会属于传统循环的范畴吗?(我不反对循环,只是让你知道)是的-在编程上下文中定义循环是一种多次执行某项操作的方法。你可以在上面分层语法和结构来隐藏循环,但是(至少在“可识别”程序的范围内)它仍然是一个循环。这是不正确的。这将只调用
警报()
一次。您必须传递函数引用,而不是执行
alert()
的返回结果。让我来解决这个问题。
function sayHi() {
    alert('hi');
}

_.times(3, sayHi);