我在nodejs中有以下功能,res.execSync接受多个参数,详见此处: https://github.com/xdenser/node-firebird-libfbclient
function execSync(param1,param2,...,paramN);
param1,param2,..., paramN - 预备语句的参数,与SQL中的顺序相同 并有适当的类型。
function test(sql, callback)
{
var args = Array.prototype.slice.call(arguments).splice(2);
res.execSync(args);
}
test('test', function() {}, "param1", "param2", "param3");
错误:将String视为参数#1。
如何解决此问题?
答案 0 :(得分:1)
args
是一个数组。您需要使用apply
方法将其解压缩到单独的参数中。
res.execSync.apply(res, args);
它的工作方式与call
类似,但是接收通常参数列表的数组内容。
顺便说一句,您可以将范围参数传递给切片。这意味着编写第一行的方式更短:
var args = Array.prototype.slice.call(arguments, 2);
答案 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");