阅读这段 JavaScript 语法对我来说真的很困惑:
router.route('/:id')
.put((...args) => controller.update(...args))
.get((...args) => controller.findById(...args));
...args是什么意思?
阅读这段 JavaScript 语法对我来说真的很困惑:
router.route('/:id')
.put((...args) => controller.update(...args))
.get((...args) => controller.findById(...args));
...args是什么意思?
(...args) =>
,...args
是一个剩余参数。它必须始终是参数列表中的最后一项,并且将被分配一个包含未分配给先前参数的所有参数的数组。arguments
对象的替代品。不需要再写:function max() {
var values = Array.prototype.slice.call(arguments, 0);
// ...
}
max(1,2,3);
function max(...value) {
// ...
}
max(1,2,3);
arguments
对象,这是创建可变参数(箭头)函数的唯一方法。
controller.update(...args)
,请参见 "foo(...arg)"(函数调用中三个点的含义)是什么意思?。本质上,正在做的事情是这样的:
.put((a, b, c) => controller.update(a, b, c))
...
)允许我们接受可变数量的参数并将它们存储在数组中。然后我们再次使用扩展运算符将它们传递给update
函数:.put((...args) => controller.update(...args))
update
函数是透明的。...
不是一个操作符,它与扩展运算符没有任何关系。 - Felix Klingfunction sum(x, y, z) {
return x + y + z;
}
const numbers = [1, 2, 3];
console.log(sum(...numbers));
// expected output: 6
意味着传递所有值(如果有未知数量的项目,则非常有用)
示例代码
console.log(sum(1, 2, 3, 4)); // expected output: 10
function sum(...allItems) {
let total = 0;
for (const item of allItems) {
total += item;
}
return total;
}
如果您了解一些 Python 语法,那么 *args
就完全相同。因为 *args
(Python)是元组对象,而 Javascript 没有像 Python 那样的元组,所以 ..args
是一个数组对象。
这被称为“rest参数”,您可以使用rest参数将未指定数量的参数作为数组传递,一个函数只能有一个rest参数,并且它必须是函数的最后一个参数。
function sum(...args){
let output = 0;
for(const num of args){
output += num;
}
return output;
}
console.log(sum(2,4,8));
这里接受作为数组传递的参数,并将输出求和并返回
...args
的意思是“任意数量的值”。例如,您可以传递null
或1,2,3,4
- 这并不重要,方法足够聪明以处理它。 - Tigger