2015-04-01 54 views
1

我想將帶有參數的函數傳遞給另一個函數而不對其進行評估。傳遞帶參數的函數

此方法不起作用:

function first (id) {...} 

function second (func) { 
    func(); 
} 

second(first(id)); 

此方法不會,但我不能,因爲參數的數量並不總是一樣使用它:

function first (id) {...} 

function second (func, id) { 
    func(id); 
} 

second(first, someId); 

回答

2

可以使用#bind爲部分應用程序:

second(first.bind(null, id)) 
0

創建一個包裝函數:

second(function() { first(my, parameters); }) 
0

這個怎麼樣?

function func1(param1, param2){ 
    console.log("func1"); 
    console.log(param1); 
    console.log(param2); 
} 

function func2(param1){ 
    console.log("func2"); 
    console.log(param1); 
} 

function executor(func, params) { 
    //This do all the trick :) 
    func.apply(this, params); 
} 

executor(func1, ["first", "second"]); 
executor(func2, ["lonely"]); 

這是工作示例:https://jsfiddle.net/xrhkoL5a/(使用瀏覽器控制檯查看結果)。