1

次のコードを実行すると、JS Bin ランナーの奇妙な動作に気付きました。

var ask = prompt("test");

while(ask!=="yes"){
    ask = prompt("test");
}

この種のエラーが発生します:

4 行目で潜在的な無限ループを終了します。ループ保護を無効にするには、コードに「// noprotect」を追加します。

私はさまよいましたなぜそれが起こっているのですか?(そのコードの実行は、サイト コードで正常に動作します)

4

2 に答える 2

2

コンピュータ サイエンスには、停止問題と呼ばれる解決不可能な問題があります。

要するに、コンピューターはコードの一部を見て、それが無限ループに入るか、ある時点で終了するかを判断できないことを意味します。ただし、彼らはそれについていくつかの推測を行い、危険な可能性があるものを見つけた場合に警告することができます.

ではありません。 そうかもしれません。

これはそれらのケースの 1 つです。システムがあなたに警告しているので、あなたは「はい、はい、聞こえました。とにかくやってください」と言わなければなりません.[*]

[*] もちろん、これはスタートレック ユニバースの準備を整えるためのものです。すべての安全を無効にして、その日を救います。

于 2014-05-03T18:55:42.700 に答える
1

プロンプト、アラート、確認

これらの JS 関数は同期的です。つまり、ブラウザーは何も実行を停止し、ユーザーの応答を保留/待機します。前のプロンプトの結果を確認して再度プロンプトを出すことで無限ループを作成した可能性もあるため、そのメッセージがスローされます。

この無限ループにより、ブラウザが応答しなくなります

于 2014-05-03T18:57:36.313 に答える