如何将动态参数传递给函数,例如
var customvar = 1; //example
function iLike(){
console.log("you like ... (i know how to recieve the arguments!)")
}
function getDrink(){
return (customvar == 1 ? ('pepsi','cola') : ('drpepper'));
}
iLike('peanuts', 'pizza', getDrink());
iLike('peanuts', 'pizza', 'pepsi', 'cola'); // = result
如何正确传递来自getDrink()的参数 - 我只接受'cola'而不是'pepsi'。
谢谢你:)答案 0 :(得分:3)
如果要发送动态数量的参数,请使用apply
函数:
getDrink.apply(this, ['pepsi', 'cola']);
getDrink.apply(this, ['pepsi', 'cola', '7up']);
您还可以使用call
功能:
getDrink.call(this, 'pepsi', 'cola');
getDrink.call(this, 'pepsi', 'cola', '7up');
如果要访问函数中的所有参数,可以使用arguments
数组
function getDrink() {
var first = arguments[0]; //pepsi
var secon = arguments[1]; //cola
}
答案 1 :(得分:1)
如果您希望getDrink
返回包含'pepsi'
和'cola'
的数组,则语法为['pepsi', 'cola']
我不太确定这是不是你想要的......
请注意,这仍然会给你:
iLike('peanuts', 'pizza', ['pepsi', 'cola'])
三个参数,其中最后一个是数组,而不是四个参数。
如果你想用四个字符串参数调用iLike
,你可能想要这样调用它:
function getDrink(){
return (customvar == 1 ? ['pepsi','cola'] : ['drpepper']);
}
iLike.apply(this, ['peanuts', 'pizza'].concat(getDrinks()))
答案 2 :(得分:1)
您可以使用arguments对象:
function iLike(){
var args = Array.prototype.slice.call(arguments); //convert to real array
console.log('I like '+args[0]+', '+args[1]+' and '+args[2]);
}
如果你想从getDrink
返回'pepsi'以及'cola'(在1变量中),你可以使用数组:
function getDrink(){
return (customvar == 1 ? ['pepsi','cola'] : 'drpepper');
}
答案 3 :(得分:1)
解决方案是使用数组,并使用apply
。
var customvar = 0;
function iLike() {
console.log(arguments);
}
function getDrink() {
return (customvar == 1 ? ["pepsi", "cola"] : ["drpepper"]);
}
iLike.apply(this, ["peanuts", "pizza"].concat(getDrink()));
// ["peanuts", "pizza", "drpepper"]