gpt4 book ai didi

javascript - Javascript递归调用中的增量(i++)和(i+=1)

转载 作者:行者123 更新时间:2023-11-30 09:28:01 25 4
gpt4 key购买 nike

我有一个关于 JS increment(++) 的问题。我知道这里有很多人问过++ 和 +1 在 JS 中的区别,但是没有人在递归调用语句中提到它。

问题:我想递归地调用 exec 函数中的函数 exec 但流动的脚本运行不正常。

var exec = function(index){
if(index<7){
exec(index++);
}
}
exec(0);

output: Uncaught RangeError: Maximum call stack size exceeded

所以我将脚本更改为以下内容并且运行良好。

var exec = function(index){
if(index<7){
exec(index+=1);
}
}
exec(0);

为什么它在这个例子中表现得不同?我的递归调用错了吗?

最佳答案

index++ 是后递增的。这意味着它会增加变量,但表达式的值是 值。所以:

exec(index++);

相当于:

var oldindex = index;
index += 1;
exec(oldindex);

所以递归调用使用旧值,这意味着您继续使用相同的值递归调用,并且永远不会达到停止递归的限制。

您需要使用预增量,它会增加变量并返回值:

exec(++index);

实际上,根本没有理由增加变量,因为您再也不会在该函数中使用它。只是做:

exec(index + 1);

关于javascript - Javascript递归调用中的增量(i++)和(i+=1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48218466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com