是否可以使用“call”或“apply”将参数数组一次传递给多个函数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以使用“call”或“apply”将参数数组一次传递给多个函数?相关的知识,希望对你有一定的参考价值。
例如,假设我有两个函数,a
和b
,a
和b
都使用两个string
参数,然后将这些字符串记录到控制台:
function a(w, x) {
console.log(w, x);
}
function b(y, z) {
console.log(y, z);
}
是否可以使用a
或b
调用call
和apply
来同时向两个函数传递一个参数数组?
例如,这是一些伪代码:
(a, b).apply(window, ["Wello", "Horld"]);
是否有可能在不使用循环或执行此操作的情况下实现此目的:
var args = ["Wello", "Horld"];
a.apply(window, args);
b.apply(window, args);
此外,是否可以一次调用两个以上的函数?
注意:这些功能可以按任何顺序运行。
谢谢。
答案
是否可以使用call或apply调用a和b一次将一个参数数组传递给两个函数?
...
是否有可能在不使用循环或做某事的情况下实现这一点......
不。你必须做你所描述的,要么将参数放在数组中并进行每次调用,要么循环遍历函数数组等。
例如:
for (const f of [a, b]) {
f.apply(window, ["Wello", "Horld"]);
// Or if you have the arguments as discrete things like that, I'd use call:
//f.call(window, "Wello", "Horld");
}
另一答案
您仍然需要对函数进行一些迭代,将函数转换为数组并使用Function#apply
调用它们。
function a(w, x) {
console.log(w, x);
}
function b(y, z) {
console.log(y, z);
}
[a, b].forEach(fn => fn.apply(window, ["Wello", "Horld"]));
另一答案
你需要使用某种循环。
const args = ["Wello", "Horld"];
[a, b].forEach(f => f.apply(Windows, args));
会做的伎俩。这适用于您想要的功能。
以上是关于是否可以使用“call”或“apply”将参数数组一次传递给多个函数?的主要内容,如果未能解决你的问题,请参考以下文章