我正在尝试创建一个函数“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);
这样的函数调用吗?
非常感谢!
答案 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]);
}
}