2016-02-28 29 views
0

我周圍搜索,並沒有真正找到關於這個問題。調用一個函數與多個參數存儲在一個數組在javascript中

所以我有一個功能,可以採用多個參數,(參數的數量並不重要)是這樣的:

function print(){ 
    for(var i = 0; i<arguments.length; i++){ 
     console.log(arguments[i]); 
    } 
} 

和我所有的參數數組,如:

var params = [param1,param2,...]; 

我需要調用存儲在params數組中的那些參數的函數。好吧,我能做到這一點,如果我知道PARAMS數量:

print(params[0],params[1],...); 

,但我不知道則params的數量和需要一種方法來調用所有這些功能。

有反正我可以做到這一點嗎?我嘗試過使用print.call(params),但是調用方法不起作用。

感謝

+0

可能重複的[如何從URL參數獲取值](http://stackoverflow.com/questions/979975/how-to-get-the-value-from-the-url-parameter) –

+0

@GandalftheWhite:有東西告訴我你在那裏抓錯了URL :-) –

回答

1

在ES5和更早的版本,你正在尋找Function#apply,這是所有真正的JavaScript函數有:

console.log.apply(console, params); 

...其中params是你的陣列。

Function#apply使用給定的this值(第一個參數)調用您調用的函數,並調用您給它的數組中的參數。

請注意,並不能保證所有主機提供的功能(如console.log)都是真正的JavaScript功能。然而在現代瀏覽器中,console.log確實有apply。 YMMV,比如IE9及更早的版本。

在ES2015(ES6)及更高版本,您應該使用spread operator

// ES2015 and later only 
console.log(...params); 

...又哪裏params是你的陣列。

+0

真棒!這正是我需要的。謝謝 :) –

相關問題