如何弹出未知参数,然后调用另一个函数与其余的未知参数
问题描述:
我试图做一个函数“一个”,将采取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]);
}
}
你知道的'。适用()'函数,和/或['...'传播语法(https://developer.mozilla.org/en/docs/Web/JavaScript/参考/运营/ Spread_operator)? – nnnnnn
^感谢这一点,现在学习它,绝对要走的路 – RyanN