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



我正在尝试制作一个函数",它将在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>>>);

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

在JS中是否有b(arguments=myArr);这样的功能调用?

非常感谢!

尝试这个。

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]);
  }
}

也许将数组传递到函数" 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
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]);
        }
    }

最新更新