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

How to pass parameters from several sub functions to a major one

本文关键字:一个 函数 参数 子函数      更新时间:2023-09-26

我需要您帮助来弄清楚以下内容:

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

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 未定义 未定义

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

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

多谢!

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

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

阅读有关参数的更多信息

注意:

  • 不要不必要地使用全局变量
  • 不需要将参数传递给AddAll()作为Array,只需comma(,)分开
  • 即可

您可以更改函数,使其采用字符串数组。

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

我会使用答案的修改版本@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]);
}

这样,你传递给函数多少个字符串都没关系,它们都会被写入。

从您的问题来看,此功能似乎将进行多次迭代。

您可以使用

全局变量:

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