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

2020/09/29 04:41 · javascript ·  · 0评论

我已经尝试了以下方法,但均未成功:

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

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

a(1,2,3);

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

用于.apply()argumentsin函数具有相同的访问权b,如下所示:

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

您可以在这里进行测试

点差运算符

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

ECMAScript ES6添加了一个新的运算符,可让您以更实际的方式执行此操作... Spread Operator

不使用该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控制台才能看到结果 - 页面内没有结果。

它将显示以下结果:

Spread运算符参数示例的图像

简而言之,如果您使用数组,那么散布运算符可以用于不同的目的,因此它也可以用于函数参数,您可以看到官方文档中介绍的类似示例:Rest参数

的解释,没有任何其他答案用品的是,原来的参数仍然可用,而不是在原来的位置arguments的对象。

arguments对于提供给函数的每个实际参数,对象包含一个元素。当你调用a你提供三个参数:编号12和,3因此,arguments包含[1, 2, 3]

function a(args){
    console.log(arguments) // [1, 2, 3]
    b(arguments);
}

b但是,当您调用时,您只传递了一个参数:aarguments对象。So argumentscontains [[1, 2, 3]](即一个元素,它是aarguments对象,其属性包含的原始参数a)。

function b(args){
    // arguments are lost?
    console.log(arguments) // [[1, 2, 3]]
}

a(1,2,3);

正如@Nick演示的,您可以用来在调用中apply提供一个设置arguments对象。

以下实现相同的结果:

function a(args){
    b(arguments[0], arguments[1], arguments[2]); // three arguments
}

但是apply在一般情况下是正确的解决方案。

试试这个

function global_func(...args){
  for(let i of args){
    console.log(i)
  }
}


global_func('task_name', 'action', [{x: 'x'},{x: 'x'}], {x: 'x'}, ['x1','x2'], 1, null, undefined, false, true)




//task_name
//action
//(2) [{...},
//    {...}]
//    {
//        x:"x"
//    }
//(2) [
//        "x1",
//        "x2"
//    ]
//1
//null
//undefined
//false
//true
//func

如果只想传递某些参数,可以这样:

Foo.bar(TheClass, 'theMethod', 'arg1', 'arg2')

Foo.js

bar (obj, method, ...args) {
  obj[method](...args)
}

obj并且methodbar()方法使用,而其余的args则传递给实际的调用。

本文地址:http://javascript.askforanswer.com/jiangcanshuchuandigeilingyigejavascripthanshu.html
文章标签:
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!