我希望能够将任意数量的参数传递给函数,然后能够在以后使用这些参数。我知道我可以传入默认参数,但我不知道在我的函数中声明了什么。
例如,
function test(????) {
console.log(a)
console.log(b)
console.log(c)
}
test(a="a", b="b", c="c")
我也受到了这个函数的挑战,并尽可能少地对var声明进行更改。所以这里声明了变量a,b和c,我无法编辑这些变量。我应该能够传递参数,然后知道将自己分配给这些变量。
function test(???) {
var a,b,c
if (a>b){
c = a + b
}
}
test(a=2,b=3)
答案 0 :(得分:4)
您实际上不需要在函数参数中定义任何参数。您需要做的就是访问j arguments
内置的javascript内容。
所以你的代码可能如下所示:
function test() {
var a = arguments[0];
var b = arguments[1];
var c = arguments[2];
console.log(a);
console.log(b);
console.log(c);
}
test("a", "b", "c");
供参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments
答案 1 :(得分:2)
使用数组是一个好主意,但为了完整性......
如果您能够支持ES6功能,spread operator与arguments关键字结合使用是一种巧妙的解决方法:
function anyNumber() {
console.log(...arguments); // -> 1 2 3 4
let argsAsArray = [0, ...arguments, 5]; // now they're an array
argsAsArray.forEach(s => console.log(s)); // -> 0 1 2 3 4 5
};
anyNumber(1,2,3,4);
使用扩展运算符可以做很多很酷的事情,尤其是对象和参数解构。
答案 2 :(得分:1)
你可以传入一个对象或一个数组:
function test1([a, b, c]) {
// ...
}
test1([1, 2, 3]);
function test2({ a, b, c }) {
// ...
}
test2({ a: 1, b: 2, c: 3 });
答案 3 :(得分:1)
function test(input) {
console.log(input.a);
console.log(input.b);
console.log(input.c);
}
test({ a: 1, b: 2, c: 3 });
答案 4 :(得分:0)
您应该使用数组或对象。
在该数组中添加所需的参数。
function test(arr) {
console.log(arr.a);
console.log(arr.b);
console.log(arr.c);
}
arr = {}
arr.a = "a";
arr.b = "b";
arr.c = "c";
k = test(arr);
答案 5 :(得分:0)
在更新的问题中给定javascript
,您可以在函数名称后的()
内定义默认参数。
function test(a = 2, b = 3) {
let c;
if (a > b) {
c = a + b
} else {
c = 0
}
console.log(c);
}
test(); // 0
test(4); // 7
另见Can we set persistent default parameters which remain set until explicitly changed?