在不重置javascript中的变量的情况下,在for循环中重用函数的正确方法是什么?
我在尝试优化代码时遇到了这个问题。我试图在我的代码中使用一个函数(似乎我必须重复代码2次才能使它工作,因为我没有得到我想要的结果):
let tmpCont = undefined;
let tmpPrice = undefined;
let evaluate = undefined;
let evaluate2 = undefined;
let cont = 0;
let tmp = true;
let cont2 = 30;
let tmp2 = false;
for (let i = 0; i < 10; i++) {
evaluate = analize(cont, tmp);
console.log(evaluate + "test");
evaluate2 = analize(cont2, tmp2);
console.log(evaluate2);
}
function analize(tmpCont, tmpPrice) {
for (let i = 0; i < 10; i++) {
tmpCont++;
}
return [tmpCont, tmpPrice];
}
回答如下:
在javascript中,传递给函数的所有变量都是passed by value而不是引用。更改函数中的值不会更改传递的变量的值。你有2个选择:
- 传递包含您的计数的对象。
- 分配返回的值。
所以要做第一个:
let evaluate = undefined;
let evaluate2 = undefined;
const values={cont:0, price:true};
const values2={cont:30, price:false};
for (let i = 0; i < 10; i++) {
evaluate = analize(values);
console.log(evaluate + " test");
evaluate2 = analize(values2);
console.log(evaluate2);
}
function analize(tmp) {
for (let i = 0; i < 10; i++){
tmp.cont++;
}
return [tmp.cont, tmp.price];
}
在不重置javascript中的变量的情况下,在for循环中重用函数的正确方法是什么?
我在尝试优化代码时遇到了这个问题。我试图在我的代码中使用一个函数(似乎我必须重复代码2次才能使它工作,因为我没有得到我想要的结果):
let tmpCont = undefined;
let tmpPrice = undefined;
let evaluate = undefined;
let evaluate2 = undefined;
let cont = 0;
let tmp = true;
let cont2 = 30;
let tmp2 = false;
for (let i = 0; i < 10; i++) {
evaluate = analize(cont, tmp);
console.log(evaluate + "test");
evaluate2 = analize(cont2, tmp2);
console.log(evaluate2);
}
function analize(tmpCont, tmpPrice) {
for (let i = 0; i < 10; i++) {
tmpCont++;
}
return [tmpCont, tmpPrice];
}
回答如下:
在javascript中,传递给函数的所有变量都是passed by value而不是引用。更改函数中的值不会更改传递的变量的值。你有2个选择:
- 传递包含您的计数的对象。
- 分配返回的值。
所以要做第一个:
let evaluate = undefined;
let evaluate2 = undefined;
const values={cont:0, price:true};
const values2={cont:30, price:false};
for (let i = 0; i < 10; i++) {
evaluate = analize(values);
console.log(evaluate + " test");
evaluate2 = analize(values2);
console.log(evaluate2);
}
function analize(tmp) {
for (let i = 0; i < 10; i++){
tmp.cont++;
}
return [tmp.cont, tmp.price];
}
评论列表 (0)
- 暂无评论