我一直在寻找一段时间,似乎无法找到答案。我不知道是否有可能,但我只是好奇。
假设我有一个简单的功能:
function foo(name){alert(name);}
还假设我必须使用几个不同的名称多次调用此函数:
foo("bar"); foo("blahh"); foo("myName"); foo("yourName");
是否有这方面的简写?
例如:foo("bar":"blahh":"myName":"yourName");
这个例子很简单,但在实践中,校长可能非常有用。如果有某种jQuery解决方案,我也会对此持开放态度。
答案 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