在不重置javascript中的变量的情况下,在for循环中重用函数的正确方法是什么?
我在尝试优化代码时遇到了这个问题。我试图在我的代码中使用一个函数(似乎我必须重复代码2次才能使其工作,因为我没有得到我想要的结果):在不重置javascript中的变量的情况下,在for循环中重用函数的正确方法是什么?,javascript,node.js,Javascript,Node.js,我在尝试优化代码时遇到了这个问题。我试图在我的代码中使用一个函数(似乎我必须重复代码2次才能使其工作,因为我没有得到我想要的结果): 设tmpCont=未定义; 设tmpPrice=未定义; 让评估=未定义; 让evaluate2=未定义; 设cont=0; 设tmp=true; 设cont2=30; 设tmp2=false; for(设i=0;i
设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的值,但它不会。您传递的是指向对象的指针。您可以更改内容,但更改其指向的位置不会修改传入的变量。有关更完整的答案,请参阅。您是对的,该值是一个引用对象。我删除了我以前的评论