Javascript多次调用函数的速记

时间:2011-06-30 15:54:29

标签: javascript jquery function

我一直在寻找一段时间,似乎无法找到答案。我不知道是否有可能,但我只是好奇。

假设我有一个简单的功能:
function foo(name){alert(name);}

还假设我必须使用几个不同的名称多次调用此函数:
foo("bar"); foo("blahh"); foo("myName"); foo("yourName");

是否有这方面的简写?

例如:foo("bar":"blahh":"myName":"yourName");

这个例子很简单,但在实践中,校长可能非常有用。如果有某种jQuery解决方案,我也会对此持开放态度。

5 个答案:

答案 0 :(得分:6)

您可以将参数放在一个数组中并迭代它:

params = ["bar", "blahh", "myName", "yourName"];
for (var i=0; i<params.length; i++) 
    foo(params[i]);

如果func采用多个args,则可以将数组放入数组中:

params = [[1,"one"], [2,"two"], [5,"five"]];
for (var i=0; i<params.length; i++) 
    foobar(params[i][0], params[i][1]);

params = [[1,"one"], [2,"two"], [5,"five"]];
for (var i=0; i<params.length; i++) 
    foobar.apply(null, params[i]);

答案 1 :(得分:5)

作为其他答案的概括:

Function.prototype.sequence = function(vals) {
   for (var i = 0; i < vals.length; ++i) this(vals[i]);
}

这会将sequence方法添加到所有函数中。所以你可以在任何函数中使用它:

function foo() {....}

foo.sequence(["bar","blah","myName","yourName"]);

答案 2 :(得分:3)

将任务视为依次将序列中的每个元素应用于给定函数。在jQuery中,这可以完成:

function foo(name){ alert(name) }
$.each(["bar","blah","myName","yourName"], function (index, value) {
   foo(value)
})

需要额外的功能,因为jQuery.each回调传递索引和值作为参数。如果价值是第一个将是很好的:(

与(修改后的foo函数)比较:

function foo(index, name){ alert(name) }
$.each(["bar","blah","myName","yourName"], foo)

快乐的编码。

答案 3 :(得分:2)

您可以将数组传递给函数:

function foo(vals) {
   for (var i = 0; i < vals.length; ++i) {
       alert(vals[i]); 
   }
}

foo(["bar","blah","myName","yourName"]);

答案 4 :(得分:2)

实际上你可以这样做:

function foo(){
for (var i=0; i< arguments.length; i++){
         alert(arguments[i]);
     }
}

然后你可以用你喜欢的参数调用它:

foo('miao', 'baw');

//警告miao然后baw