可能重複:
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])
也不好,因爲我不知道數組的長度。
我該怎麼做?
的console.log
僅僅是一個例子,我會在不同的問題
UPDATE
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
UPDATE:
也許我的問題是不夠清楚,對不起。
的的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.call」。你的意思是問'爲什麼'dump.call(this,asd)'輸出結果是「a:[1,2,3] b:undefined」?' – outis 2011-05-25 20:43:54
您繼續使用CALL。使用APPLY。做Sum.apply(this,test1)並看看你得到了什麼。 – squidbe 2011-05-25 21:02:01
你是對的。對不起 – 2011-05-25 21:02:34