首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将参数从多个子函数传递到一个主函数

如何将参数从多个子函数传递到一个主函数
EN

Stack Overflow用户
提问于 2012-05-25 18:23:27
回答 4查看 216关注 0票数 2

我需要你的帮助来解决以下问题:

使用名为AddSub#的以下函数,我希望将名为string#的变量传递给主添加函数(AddAll

代码语言:javascript
复制
function AddSub1()
{       string11 = '11';
        string12= '12';
        string13= '13';
        AddAll(string11, string12, string13);
}

function AddSub2()
{       string21 = '21';
        string22= '22';
        string23= '23';
        AddAll(string21, string22, string23);
}

但如果我这么做了:

代码语言:javascript
复制
function AddAll(string11, string12, string13, string21, string22, string23){
    document.write(string11);
    document.write(string12);
    document.write(string13);
    document.write(string21);
    document.write(string22);
    document.write(string23);
}

我调用函数AddSub1,得到: 11 12 13未定义

然后,如果我调用AddSub2,我会得到: 21 22 23 undefined undefined

如何正确地将变量传递给AddAll函数,这样才能得到11 12 13 21 22 23?

非常感谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-25 18:29:22

您可以使用全局变量:

代码语言:javascript
复制
var string11,string12,string13,string21,string22,string23;

function AddSub1()
{       
    string11= '11';
    string12= '12';
    string13= '13';
}

function AddSub2()
{   
    string21= '21';
    string22= '22';
    string23= '23';
}

function AddAll(){
    document.write(string11);
    document.write(string12);
    document.write(string13);
    document.write(string21);
    document.write(string22);
    document.write(string23);
}

然后你调用:

代码语言:javascript
复制
AddSub1();
AddSub2();
AddAll();
票数 -1
EN

Stack Overflow用户

发布于 2012-05-25 18:24:24

您应该使用arguments,一个类似Array的对象,与传递给函数的参数相对应。

代码语言:javascript
复制
function AddAll(){
    var args = arguments; // arguments will give you an array 
                          // of all passed arguments to this function

    // here I keep just a reference in args, 
    // you can also use argumetns itself directly                              

    // To retrieve those arguements use this

    document.write(args[0]);
    document.write(args[1]); // ...etc

    // You can also make a loop over arguments

    for (var i = 1; i < arguments.length; i++) {
      document.write(arguments[i]);
    }
}

阅读有关的更多信息

备注:

  • 不要不必要地使用全局变量
  • 不需要将参数作为Array传递给AddAll(),只需将comma(,)
票数 3
EN

Stack Overflow用户

发布于 2012-05-25 18:29:08

你可以改变你的函数,让它接受一个字符串数组。

代码语言:javascript
复制
function AddAll(strings) {
    for (var i = 0; i < strings.length; i++) {
        document.write(strings[i]);
    }
}

AddAll(["hello", "world"]);

或者使用示例中的代码:

代码语言:javascript
复制
function AddSub2() {       
    string21 = '21';
    string22= '22';
    string23= '23';
    AddAll([string21, string22, string23]);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10752698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档