【问题标题】:How to pass arguments into function?如何将参数传递给函数?
【发布时间】:2011-12-13 01:02:51
【问题描述】:

我在 nodejs 中有以下函数, res.execSync 接受多个参数,详见此处: https://github.com/xdenser/node-firebird-libfbclient

函数 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");

错误:期望字符串作为参数 #1。

我该如何解决这个问题?

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    你不是说:

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

    【讨论】:

      【解决方案2】:

      args 是一个数组。您需要使用apply 方法将其解压缩为单独的参数。

      res.execSync.apply(res, args);
      

      它的工作方式与call 类似,但接收的是一个包含常用参数列表的数组。


      顺便说一句,您可以将范围参数传递给切片。这意味着写第一行的方法更短:

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

      【讨论】:

        猜你喜欢
        • 2015-10-30
        • 2013-01-27
        • 2021-08-15
        • 2016-05-20
        • 2016-11-17
        • 2020-02-09
        • 2014-07-13
        • 1970-01-01
        相关资源
        最近更新 更多