レッスンに戻る

入力が数字になるまで繰り返す

重要度: 5

訪問者が有効な数値を入力するまで数字を要求するreadNumber関数を作成してください。

結果の値は数値として返す必要があります。

また、訪問者は空行を入力するか「キャンセル」を押すことでプロセスを停止できます。その場合、関数はnullを返さなければなりません。

デモを実行する

テスト付きサンドボックスを開く。

function readNumber() {
  let num;

  do {
    num = prompt("Enter a number please?", 0);
  } while ( !isFinite(num) );

  if (num === null || num === '') return null;

  return +num;
}

alert(`Read: ${readNumber()}`);

この解決策はnull/空の行を処理する必要があるため、少し複雑になります。

そのため、実際には「正規の数値」になるまで入力を受け付けます。null (キャンセル) と空行の両方も、数値形式では0になるため、その条件を満たしています。

停止後、nullと空行を特別に処理して(nullを返す)数値に変換すると0が返されるためです。

サンドボックスでテストを使用して解決策を開きます。