在 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
object的替代品。而不是写作
function max() {
var values = Array.prototype.slice.call(arguments, 0);
// ...
}
max(1,2,3);
你可以写
function max(...value) {
// ...
}
max(1,2,3);
此外,由于箭头函数没有arguments
object,这是创建可变参数(箭头)函数的唯一方法。
As controller.update(...args)
,请参阅“foo(...arg)”(函数调用中的三个点)的含义是什么?.
基本上,正在做的是这样的:
.put((a, b, c) => controller.update(a, b, c))
当然,如果我们想要 4 个参数,或者 5 个,或者 6 个呢?我们不想为所有可能的参数数量编写函数的新版本。
该价差运营商(...
)使我们能够接受可变数量的参数,并将其存储在数组中。然后我们再次使用扩展运算符将它们传递给update
函数:
.put((...args) => controller.update(...args))
这对update
函数来说是透明的,函数将它们作为普通参数接收。
“...args”(三个点)的意思是Javascript 扩展运算符。
function sum(x, y, z) {
return x + y + z;
}
const numbers = [1, 2, 3];
console.log(sum(...numbers));
// expected output: 6