如何将参数从几个子函数传递给一个主函数

时间:2012-05-25 10:23:27

标签: javascript jquery ajax function variables

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

使用以下函数调用AddSub#我想传递给主要的add函数(AddAll)变量名为string#

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

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

但如果我这样做:

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 undefined undefined undefined

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

如何正确地将变量传递给AddAll函数,以便获得11 12 13 21 22 23?

非常感谢!

4 个答案:

答案 0 :(得分:3)

你应该使用参数,一个类似于数组的对象,对应于传递给函数的参数。

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]);
    }
}

详细了解arguments

注意:

  • 不要不必要地使用全局变量
  • 无需将参数传递给AddAll() Array,只需comma(,)分隔

答案 1 :(得分:0)

您可以更改您的函数,以便它需要一个字符串数组。

function AddAll(strings) {
    for (var i = 0; i < strings.length; i++) {
        document.write(strings[i]);
    }
}

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

或使用示例中的代码:

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

答案 2 :(得分:0)

我会使用@thecodeparadox

的修改版本的答案
function AddAll(){
var args = arguments; // arguments will give you an array 

for(var i=0,j=args.length;i<j;i++)
document.write(args[i]);

}

这样,你传递给函数的字符串数量无关紧要。

从你的问题看来,这个函数似乎会有多次迭代。

答案 3 :(得分:-1)

您可以使用全局变量:

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);
}

然后你打电话:

AddSub1();
AddSub2();
AddAll();