Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在不重置javascript中的变量的情况下,在for循环中重用函数的正确方法是什么?_Javascript_Node.js - Fatal编程技术网

在不重置javascript中的变量的情况下,在for循环中重用函数的正确方法是什么?

在不重置javascript中的变量的情况下,在for循环中重用函数的正确方法是什么?,javascript,node.js,Javascript,Node.js,我在尝试优化代码时遇到了这个问题。我试图在我的代码中使用一个函数(似乎我必须重复代码2次才能使其工作,因为我没有得到我想要的结果): 设tmpCont=未定义; 设tmpPrice=未定义; 让评估=未定义; 让evaluate2=未定义; 设cont=0; 设tmp=true; 设cont2=30; 设tmp2=false; for(设i=0;i

我在尝试优化代码时遇到了这个问题。我试图在我的代码中使用一个函数(似乎我必须重复代码2次才能使其工作,因为我没有得到我想要的结果):

设tmpCont=未定义;
设tmpPrice=未定义;
让评估=未定义;
让evaluate2=未定义;
设cont=0;
设tmp=true;
设cont2=30;
设tmp2=false;
for(设i=0;i<10;i++){
评估=分析(续,tmp);
控制台日志(评估+测试);
评估2=分析(续2,tmp2);
控制台日志(evaluate2);
}
功能分析(tmpCont、tmpPrice){
for(设i=0;i<10;i++){
tmpCont++;
}
返回[tmpCont,tmpPrice];

}
您可以只增加每个for循环末尾的值

设tmpCont=未定义;
设tmpPrice=未定义;
让评估=未定义;
让evaluate2=未定义;
设cont=0;
设tmp=true;
设cont2=30;
设tmp2=false;
for(设i=0;i<10;i++){
评估=分析(续,tmp);
控制台日志(评估+测试);
评估2=分析(续2,tmp2);
控制台日志(evaluate2);
cont+=10//
cont2+=10//
}
功能分析(tmpCont、tmpPrice){
for(设i=0;i<10;i++){
tmpCont++;
}
返回[tmpCont,tmpPrice];

}
您可以只增加每个for循环末尾的值

设tmpCont=未定义;
设tmpPrice=未定义;
让评估=未定义;
让evaluate2=未定义;
设cont=0;
设tmp=true;
设cont2=30;
设tmp2=false;
for(设i=0;i<10;i++){
评估=分析(续,tmp);
控制台日志(评估+测试);
评估2=分析(续2,tmp2);
控制台日志(evaluate2);
cont+=10//
cont2+=10//
}
功能分析(tmpCont、tmpPrice){
for(设i=0;i<10;i++){
tmpCont++;
}
返回[tmpCont,tmpPrice];

}
在javascript中,传递到函数中的所有变量都不是通过引用传递的。更改函数中的值不会更改传递的变量的值。您有两种选择:

  • 传递包含计数的对象
  • 分配返回的值
  • 因此,首先:

    let evaluate=未定义;
    让evaluate2=未定义;
    常量值={cont:0,price:true};
    const values2={cont:30,price:false};
    for(设i=0;i<10;i++){
    评估=分析(值);
    控制台日志(评估+测试);
    evaluate2=分析(值2);
    控制台日志(evaluate2);
    }
    功能分析(tmp){
    for(设i=0;i<10;i++){
    tmp.cont++;
    }
    返回[tmp.cont,tmp.price];
    
    }
    在javascript中,传递到函数中的所有变量都不是通过引用传递的。更改函数中的值不会更改传递的变量的值。您有两种选择:

  • 传递包含计数的对象
  • 分配返回的值
  • 因此,首先:

    let evaluate=未定义;
    让evaluate2=未定义;
    常量值={cont:0,price:true};
    const values2={cont:30,price:false};
    for(设i=0;i<10;i++){
    评估=分析(值);
    控制台日志(评估+测试);
    evaluate2=分析(值2);
    控制台日志(evaluate2);
    }
    功能分析(tmp){
    for(设i=0;i<10;i++){
    tmp.cont++;
    }
    返回[tmp.cont,tmp.price];
    
    }
    什么是
    tmpPrecio
    ?@CertainPerformance我更正了代码。@George我尝试了,并在代码中做了,但我得到了相同的结果(我在代码中编辑了它)。您将cont和cont2(分别为0和30)传递到analize中,然后将tmpCont更改为+=10。这不会更改原始变量值。相反,您可以更改cont和cont2。当您调用“evaluate=analize(cont,tmp);”时,cont值在tmpCont参数中被注入,因此原始cont不会更改。它没有被重置。它根本没有被更改。什么是
    tmpPrecio
    ?@CertainPerformance我更正了代码。@George我试过了,并在代码中做了,但我得到了相同的结果(我在代码中编辑了它)。您将cont和cont2(分别为0和30)传递到analize中,然后您将tmpCont更改为+=10。这不会更改原始变量值。相反,您可以更改cont和cont2。当您调用“evaluate=analize(cont,tmp);”时,cont值在tmpCont参数中被注入,因此原始cont不会更改。它没有被重置。它根本没有被改变。@DaniëlCamps不完全是。通过引用传递意味着如果您有
    函数foo(a){a={};}
    那么调用
    varb={c:1};foo(b)
    会改变b的值,但它不会。您传递的是指向对象的指针。您可以更改内容,但更改其指向的位置不会修改传入的变量。有关更完整的答案,请参阅。您是对的,该值是一个引用对象。我删除了我以前的comment@Dani不完全是。通过引用传递意味着如果您有
    函数foo(a){a={};}
    那么调用
    varb={c:1};foo(b)
    会改变b的值,但它不会。您传递的是指向对象的指针。您可以更改内容,但更改其指向的位置不会修改传入的变量。有关更完整的答案,请参阅。您是对的,该值是一个引用对象。我删除了我以前的评论