【问题标题】:Passing arguments as separate parameters in JS在 JS 中将参数作为单独的参数传递
【发布时间】:2010-11-10 01:22:17
【问题描述】:

在 JavaScript 中,如果我有一些函数,我可以使用 arguments 对象来查看传入了多少参数。有没有办法调用第二个函数并传递这些参数,就好像它们只是普通的单独参数一样?

类似这样的:

function f() {
    g(arguments);
}

function g(a, b, c) {
    alert(a+b+c);
}

所以在这种情况下,如果我打电话给f(1,2,3),我会收到6 的警报。为了清楚起见,我不是要传递可变数量的参数,只是一种将参数对象作为普通单独参数传递给其他函数(可能是本机 JavaScript 函数)的方法

【问题讨论】:

    标签: javascript function prototype parameters arguments


    【解决方案1】:
    function f() 
    {
        g.apply(this,arguments);
    }
    

    有关此技术的更多详细信息,请参阅https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Function/apply

    另外,请注意第一个参数定义了函数将在其中运行的上下文。为第一个参数传递 null 将简单地使用全局上下文(窗口)。

    【讨论】:

      【解决方案2】:

      另一种方法是使用邪恶的 eval();

      我不建议这样做。

      function f()
      {
          var eval_string = "g(";
          for(var i=0; i<arguments.length; i++)
              eval_string += arguments[i] + ", ";  // if arguments[i] is an integer
      
          eval_string += ");"
      
          eval(eval_string);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-15
        • 1970-01-01
        • 2018-04-19
        • 1970-01-01
        • 2021-03-22
        相关资源
        最近更新 更多