如何将参数传递给函数?

时间:2011-12-13 01:02:51

标签: javascript node.js

我在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。

如何解决此问题?

2 个答案:

答案 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");