2011-12-13 298 views
2

我在對的NodeJS下面的函數,res.execSync發生在多個參數如下詳細介紹: https://github.com/xdenser/node-firebird-libfbclient如何將參數傳遞給函數?

function execSync(param1, param2, ..., paramN);
param1, param2, ..., paramN - parameters of prepared statement in the same order as in SQL and with appropriate types.

function test(sql, callback) 
{ 
    var args = Array.prototype.slice.call(arguments).splice(2); 
    res.execSync(args); 
} 

test('test', function() {}, "param1", "param2", "param3"); 

錯誤:期待字符串作爲參數1#。

我該如何解決這個問題?

回答

1

難道你的意思是:

function test(sql, callback) 
{ 
    var args = Array.prototype.slice.call(arguments, 2); 
    res.execSync.apply(res, args); 
} 

test('test', function() {}, "param1", "param2", "param3"); 
1

args是一個數組。您需要使用apply方法將其解包爲單獨的參數。

res.execSync.apply(res, args); 

它的工作原理就像call但接收陣列這一翻譯一般的參數列表中。


順便說一句,您可以傳遞範圍參數切片。這意味着是寫你的第一線較短的方式:

var args = Array.prototype.slice.call(arguments, 2);