将参数传递给另一个javascript函数

将参数传递给另一个javascript函数

我试过以下但没有成功:


function a(args){

    b(arguments);

}


function b(args){

    // arguments are lost?

}


a(1,2,3);

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


冉冉说
浏览 726回答 3
3回答

宝慕林4294392

用于.apply()对arguments函数进行相同的访问b,如下所示:function a(){     b.apply(null, arguments);}function b(){    alert(arguments); //arguments[0] = 1, etc}a(1,2,3);你可以在这里测试一下。

婷婷同学_

传播运营商spread运算符允许在需要多个参数(用于函数调用)或多个元素(用于数组文字)的位置扩展表达式。ECMAScript ES6添加了一个新的运算符,允许您以更实际的方式执行此操作:... Spread运算符。不使用该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控制台才能看到结果 - 没有页内结果。它会显示以下结果:简而言之,如果您使用数组,扩展运算符可以用于不同的目的,因此它也可以用于函数参数,您可以在官方文档中看到类似的示例:Rest参数

青春有我

没有任何其他的答案中提供的解释是,原来的参数是仍然可用,但不是在原来的位置arguments的对象。所述arguments对象包含提供给函数每个实际参数的一个元件。当你调用a你提供三个参数:编号1,2和,3。所以,arguments包含[1, 2, 3]。function a(args){     console.log(arguments) // [1, 2, 3]     b(arguments);}b但是,当你调用时,你只传递一个参数:a's argumentsobject。所以arguments包含[[1, 2, 3]](即一个元素,它是具有包含原始参数的属性a的arguments对象a)。function b(args){     // arguments are lost?     console.log(arguments) // [[1, 2, 3]]}a(1,2,3);正如@Nick演示的那样,您可以使用在调用中apply提供set arguments对象。以下结果取得了相同的结果:function a(args){     b(arguments[0], arguments[1], arguments[2]); // three arguments}但apply在一般情况下是正确的解决方案。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript