Javascript 如何将多个子函数的参数传递给主函数

Javascript 如何将多个子函数的参数传递给主函数,javascript,jquery,ajax,function,variables,Javascript,Jquery,Ajax,Function,Variables,我需要你的帮助,帮助我解决以下问题: 对于以下名为AddSub的函数,我希望将名为string的变量传递给主add函数(AddAll)# 但如果我这样做: function AddAll(string11, string12, string13, string21, string22, string23){ document.write(string11); document.write(string12); document.write(string13); d

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

对于以下名为AddSub的函数,我希望将名为string的变量传递给主add函数(AddAll)#

但如果我这样做:

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函数,以便获得1121321223


非常感谢

应该使用arguments,一种与传递给函数的参数相对应的类似数组的对象

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(){
var args=arguments;//arguments将为您提供一个数组
//传递给此函数的所有参数的
//这里我只保留了args中的一个引用,
//您也可以直接使用argumetns本身
//要检索这些论点,请使用以下命令
document.write(args[0]);
document.write(args[1]);/…等
//您还可以在参数上进行循环
for(var i=1;i
阅读更多关于

注意:

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

您可以更改函数,使其接受字符串数组

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

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

您可以使用全局变量:

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

我会使用@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]);

}
函数AddAll(){
var args=arguments;//arguments将为您提供一个数组

对于(var i=0,j=args.length;我知道了很多,现在我明白了全局变量的重要性!这是一个肮脏的解决方案,我不明白如何将其标记为正确的。全局变量应该尽可能少地使用。当然,作为
AddSub#
的响应,您会得到
未定义的
,因为在该函数中您调用
AddAll
给出的参数比预期的少。已经给出的其他解决方案似乎更容易接受。或者,至少,您应该向我们解释为什么需要这些嵌套函数。如果他们理解错误,我的错误是什么?当然,在打印前获取参数是“参数回音器”的最佳解决方案函数,但这不是他要求的。问题本身是有问题的,但我的答案是这个问题。并且完全符合他的要求。这种方法的一个缺点是,这个函数不明显需要任何参数或这些参数是什么。尽管如果你的函数是可变的,那么没有太多选择
AddSub1();
AddSub2();
AddAll();
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]);

}