如何弹出未知参数,然后使用其余未知参数调用另一个函数

时间:2017-09-04 03:35:20

标签: javascript arguments

我正在尝试创建一个函数“a”,它将在JavaScript中使用至少1个参数。

此函数将提取第一个参数,然后使用其余参数调用另一个函数“b”。

这样的事情:

var a = function() {

    var name = arguments[0];   // get argument1       

    console.log("Running ", name);   

    b(<<argument2, argument3... to rest>>>);
}


var b = function() {
    for (var i=0; i<arguments.length; i++){
        console.log(arguments[i]);
    }
}

但是我真的不确定如何写这行:

b(<<argument2, argument3... to rest>>>);

“arguments”可以转换为数组,因此可以弹出第一个参数。但是我真的不确定如何动态地用函数b()调用其余的参数。

JS中有b(arguments=myArr);这样的函数调用吗?

非常感谢!

3 个答案:

答案 0 :(得分:0)

也许将一个数组传递给函数“a”,按照你的计划检索第一个值,在数组上使用shift(),然后将剩下的数组传递给函数“b”。

var a = function(arguments) {
    var name = arguments[0];   // get argument1       
    console.log("Running ", name);   
    arguments.shift();
    b(arguments);
}

var b = function(arguments) {
    for (var i=0; i<arguments.length; i++){
        console.log(arguments[i]);
    }
}

a([1,2,3,4]);

控制台日志记录中的结果:

Running 1
2
3
4

答案 1 :(得分:0)

with ES6, you can use ... to extract array 

  var a = function() {

        var name = arguments[0];   // get argument1       

        console.log("Running ", name);   
        var args = Array.prototype.slice.call(arguments);
        args.shift()
        b(...args);
    }


    var b = function() {
        for (var i=0; i<arguments.length; i++){
            console.log(arguments[i]);
        }
    }

答案 2 :(得分:0)

试试这个。

var a = function() {
  var name = arguments[0]; // get argument1
  console.log("Running ", name);
  var argsForB = Array.prototype.slice.call(arguments, 1); // converts arguments to an array and removes the first param
  b.apply(null, argsForB); // calls b sending all the other params. Note that `this` inside b will be `null`. You can replace it with any other value.
}
var b = function() { 
  for (var i=0; i<arguments.length; i++) {
    console.log(arguments[i]);
  }
}