前もって申し訳ありませんが、これは以前に StackOverflow で議論された可能性があります。これが何と呼ばれているのか分からないため、満足のいく答えを見つけることができませんでした。
しかし、私は JavaScript を学んでいて、「Eloquent JavaScript」という本を読んでいます。そこで、次のコードを見つけました。これは、ユーザーが名前を入力するまで繰り返しプロンプトを表示します。
while (!input) {
var input = prompt("Who are you?");
}
エラーが発生する代わりに、これが実際に機能する理由がわかりません。条件式が評価されている時点では、inputと呼ばれる変数は存在しません。私がそれを正しく理解していれば、通常はそれ以上の実行を妨げる評価はありません。ただし、 inputという変数を作成するwhileループ本体のステートメントは、まだ実行中です。
しかし、これは私を不安にさせたので、私はこれを試しました:
while (!bool) {
console.log("Hi");
var bool = true;
}
これはさらに奇妙です。条件式に関しても同じ問題です。条件の評価後、ループ本体のスコープ内でboolが作成されています。次に、boolは常に true に設定されますが、コードは 1 回実行されます。つまり、Hiは 1 回出力されます。
私は混乱しており、助けていただければ幸いです。;)