从代码中删除警报会强制其进入无限循环

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 中的代码会进入满足这两个条件的无限循环?

逻辑:使用门户网站时防止无限循环

如何从 Python 代码进入 REPL(读取、评估、打印、循环)

从 api 获取时反应 useEffect 无限循环

win10自动修复失败无限循环是怎么回事?