从代码中删除警报会强制其进入无限循环
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从代码中删除警报会强制其进入无限循环相关的知识,希望对你有一定的参考价值。
我有一段代码,其中包含一些窗口警报消息。工作正常。但是,如果删除警报语句,程序将进入无限循环。这对我来说很奇怪。
有人可以帮助我确定代码问题吗?
function countSwaps(arr) {
let notVisited = {}, swaps = 0;
for (let i = 0; i < arr.length; i++) {
notVisited[i] = true;
}
while (Object.keys(notVisited).length) {
alert("main pass");
let nextPos, currentPos = Object.keys(notVisited)[0];
while (arr[currentPos] !== parseInt(currentPos+1)) {
nextPos = arr[currentPos] - 1;
[arr[currentPos], arr[nextPos]] = [arr[nextPos], arr[currentPos]];
swaps+= 1;
alert("Swap " + arr[currentPos] + " and " + arr[nextPos] + "
");
delete notVisited[nextPos];
}
delete notVisited[currentPos];
}
return swaps;
}
console.log(countSwaps([2,3,4,1,5]));
答案
这是无限循环的原因。
while (Object.keys(notVisited).length)
应该是类似
while (Object.keys(notVisited).length > 0)
这是一个属性,它将始终返回true
以上是关于从代码中删除警报会强制其进入无限循环的主要内容,如果未能解决你的问题,请参考以下文章
我在 Python 中编写了一个代码,即使我使用了 break 语句并继续,它仍然会进入 Python 中的无限循环:
为啥我在 React JS 中的代码会进入满足这两个条件的无限循环?