Javascript 递归函数中的递增计数器
我有一个关于递归函数中增加值的功能的问题 当我使用:Javascript 递归函数中的递增计数器,javascript,recursion,Javascript,Recursion,我有一个关于递归函数中增加值的功能的问题 当我使用: 计数器+++不工作 但是当我使用计数器+1时,它工作正常 我还找到了另一种工作方式:++counter,但我真的不明白在计数器前面使用++有什么区别 例如: printEachName = (companyNames, newPeople, counter, callback) => { if (companyNames.length === newPeople.length) { return callback(false
计数器+++
不工作
但是当我使用计数器+1
时,它工作正常
我还找到了另一种工作方式:++counter
,但我真的不明白在计数器前面使用++
有什么区别
例如:
printEachName = (companyNames, newPeople, counter, callback) => {
if (companyNames.length === newPeople.length) {
return callback(false, companyNames);
}
console.log('counter >>> ', counter);
let newP = newPeople[counter];
companyNames.push(newP.name);
printEachName(companyNames, newPeople, counter + 1, callback);
}
printEachName([], newPeople, 0, (errorPrinting, response) => {
if (errorPrinting) {
//res.send()
return;
}
console.log('response is >>> ', response);
});
试试
++计数器
。使用将首先递增变量,然后将其传递给函数。请注意,这与计数器+1
不同,后者不会更改其值。这可能已经得到了回答,但a++
会获取值a
并使用它,然后增加值。另一方面,++a
首先递增a
的值,然后使用递增的值(在您的特定示例中相当于a+1
)这是因为计数器+
,++counter
和计数器+1
是三个完全不同的东西
举例说明:
function f(n) { console.log(n); }
var counter = 0;
// Call f(counter) and then increment counter after
f(counter++);
// log: 0
// counter: 1
// Increment counter and then call f(counter)
f(++counter);
// log: 2
// counter: 2
// Call f() with the value counter+1, do not alter counter
f(counter + 1);
// log: 3
// counter: 2
+1
方法之所以有效,是因为您正确地为函数调用提供了递增的值。前缀增量也可以工作,但由于计数器
不在其他任何地方使用,这会使事情变得过于复杂。后缀版本永远不会工作。++before变量是预增量运算符,而++after变量是后增量运算符
在
计数器的值在执行printEachName()后更新
鉴于
printEachName(companyNames, newPeople, ++counter, callback);
计数器的值会立即更新,即在实际执行printEachName()之前
但是当你使用
printEachName(companyNames, newPeople, counter + 1, callback);
然后计数器的值根本不会更新。但是计数器+1会作为参数传递给函数。只是为了补充其他人的解释
counter++
相当于这个
temp = counter, counter = counter + 1, temp
你可以在这里试试看
var counter1=123;
var foo1=counter1++;
日志(“counter1:,counter1,“foo1:,foo1”);
var=2=123;
变量foo2=(温度=计数器2,计数器2=计数器2+1,温度);
日志(“counter2:,counter2,“foo2:,foo2”)
@Luis,counter++
与counter=counter+1
不同counter++
更像是temp=counter,counter=counter+1,temp
。在JavaScript控制台中尝试此操作,您将看到counter=123;foo=(温度=计数器,计数器=计数器+1,温度)
foo
将是123,
计数器`将是124
temp = counter, counter = counter + 1, temp