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