torna alle lezioni

Ripeti finché non viene inserito un numero

importanza: 5

Create una funzione readNumber che richiede (tramite prompt) all’utente un numero, quest’azione va ripetuta finché l’utente non inserisce un numero valido.

Il valore va poi restituito come numero.

L’utente potrebbe anche interrompere il processo con una linea vuota o premendo “CANCEL”. In questo caso la funzione dovrebbe ritornare null.

Esegui la demo

Apri una sandbox con i test.

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()}`);

La soluzione risulta essere leggermente più complessa poiché è necessario trattare i casi null/righa vuota.

In questo modo possiamo quindi accettare input finché non viene inserito un “numero valido”. Sia null (cancel) sia una riga vuota soddisfano questa condizione, poiché la loro forma numerica vale 0.

Dopo esserci fermati, abbiamo bisogno di di gestire i casi null e righa vuota diversamente (ritornando null), poiché convertirli alla forma numerica li “trasformerrebbe” in 0.

Apri la soluzione con i test in una sandbox.