gpt4 book ai didi

javascript - 调用具有可变参数长度的函数

转载 作者:行者123 更新时间:2023-11-28 11:10:47 35 4
gpt4 key购买 nike

Possible Duplicate:
How to create a function and pass in variable length argument list?

我要调用console.log带有可变参数列表

console.log("a","b")
console.log("a","b","c")

但我从数组中获取参数:

var arr = ["a","b","c"];

我想作为单个变量而不是作为完整的数组传递。所以console.log(arr)不是我要找的,console.log(arr[0],arr[1],arr[2])也很糟糕,因为我不知道 c 的数组长度。

我怎样才能做到这一点?

console.log这只是一个例子,我会在不同的问题中使用它

<小时/>

更新

How to create a function and pass in variable length argument list? 不好。因为根据答案

function dump(a,b) {
console.log("a:"+a,"b:"+b);
}

var asd = [1,2,3]

dump.call(this,asd)

应该给出输出:a:1,b:2而不是a:[1,2,3] b:undefined

<小时/>

更新:

也许我的问题不够清楚,抱歉。

console.log 只是变量参数调用的示例

我想对不同的问题使用相同的方法

看这个例子:

function Sum() {
var temp = 0;
for(var i=0;i<arguments.length;++i) {
temp+= arguments[i];
}
return temp;
}

我想使用数组中的不同参数进行调用。

var test1 = [1,2,3];
var test2 = [4,5,6];

var a = Sum.call(this,test1) //this gives an output "01,2,3"

var b;
for(var i=0;i<test2.length;++i) {
b = Sum(test2[i])
} //this is also bad because it only returns 6 at the last invoke.

最佳答案

使用Function.apply :

console.log.apply(console, arr);

这回答了您提出的问题。如果您想问:

Why does dump.call(this,asd) result in an output of "a:[1,2,3] b:undefined"?

答案(任何文档都会告诉你)是 Function.call是可变参数,第一个参数之后的任何参数都会传递给函数,而 Function.apply 仅接受两个参数:应用函数中 this 的值和一个数组传递给函数的参数。

换句话说,Function.call 相当于:

function (self) {
var args = [].slice.apply(arguments, [1]);
return this.apply(self, args)
}

关于javascript - 调用具有可变参数长度的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6130448/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com