将参数转发到另一个 javascript 函数

2022-08-29 23:22:52

我尝试了以下方法,但没有成功:

function a(args){
    b(arguments);
}

function b(args){
    // arguments are lost?
}

a(1,2,3);

在函数 a 中,我可以使用 arguments 关键字来访问参数数组,在函数 b 中,这些参数会丢失。有没有办法像我尝试的那样将参数传递给另一个javascript函数?


答案 1

使用 .apply() 对 in 函数具有相同的访问权限,如下所示:argumentsb

function a(){
    b.apply(null, arguments);
}
function b(){
    console.log(arguments); //arguments[0] = 1, etc
}
a(1,2,3);

您可以在此处进行测试


答案 2

点差运算符

展开运算符允许在需要多个参数(用于函数调用)或多个元素(用于数组文本)的位置展开表达式。

ECMAScript ES6 添加了一个新的运算符,可以让你以更实用的方式执行此操作:...点差运算符

不使用该方法的示例:apply

function a(...args){
  b(...args);
  b(6, ...args, 8) // You can even add more elements
}
function b(){
  console.log(arguments)
}

a(1, 2, 3)

Note如果您的浏览器仍使用 ES5,则此代码段将返回语法错误。

编者注:由于代码段使用 console.log(),因此您必须打开浏览器的 JS 控制台才能看到结果 - 不会有页内结果。

它将显示以下结果:

Image of Spread operator arguments example

简而言之,如果您使用的是数组,则 spread 运算符可用于不同的目的,因此它也可以用于函数参数,您可以在官方文档中看到类似的示例说明:Rest 参数