为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

冉冉说 2019-07-29 16:00:49
将参数传递给另一个javascript函数我试过以下但没有成功:function a(args){    b(arguments);}function b(args){    // arguments are lost?}a(1,2,3);在函数a中,我可以使用arguments关键字来访问参数数组,在函数b中这些参数丢失了。有没有办法将参数传递给另一个javascript函数,就像我尝试做的那样?
查看完整描述

3 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

用于.apply()arguments函数进行相同的访问b,如下所示:

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

你可以在这里测试一下


查看完整回答
反对 回复 2019-07-29
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

传播运营商

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参数


查看完整回答
反对 回复 2019-07-29
?
青春有我

TA贡献1784条经验 获得超8个赞

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

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

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

b但是,当你调用时,你只传递一个参数:a's argumentsobject。所以arguments包含[[1, 2, 3]](即一个元素,它是具有包含原始参数的属性aarguments对象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在一般情况下是正确的解决方案。


查看完整回答
反对 回复 2019-07-29
  • 3 回答
  • 0 关注
  • 725 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号