Javascript:Come interrompere un ciclo while quando viene soddisfatta una condizione per fare in modo che il ciclo termini quando una Var nonènulla (Break Not Working
var Age;
Age = prompt("How old are you");
while (Age === null){
prompt("Please Cofirm You Name");
if (Age > 0 ){
break;
}
}
Sto cercando di fare in modo che l'utente sia in un ciclo fino a quando var Age non è nullo ... Il mio obiettivo è fare in modo che tu non possa annullare il prompt e doverlo digitare. Ho provato a utilizzare la pausa; in un'istruzione if ma non funziona. Quando uso la pausa; in un'istruzione if continua a inviare il prompt C'è un altro modo per farlo O il valore di var Age è uguale a null (anche se aggiungi un numero intero maggiore di 0) per qualche motivo e se è qualcuno sa come risolvere c'è un modo migliore per fare in modo che l'utente digiti nel prompt
Grazie in anticipo
Risposte
var Age = prompt("How old are you?");
Age = Number(Age);
while (isNaN(Age) || Age < 1) {
Age = prompt("Please confirm your age.");
Age = Number(Age);
}
Nella finestra di dialogo del prompt, l'utente può inserire qualsiasi cosa. Quindi stiamo cercando di vedere se l'utente ha inserito un numero utilizzando Number(Age) che tenta di analizzare il valore immesso dall'utente come un numero e restituisce un numero se è un numero.
Ciò significa che se il valore immesso dall'utente è un numero, Age avrà un numero valido (ma potrebbe essere negativo, il che non è valido per il nostro caso d'uso). Qualunque cosa diversa da un numero darà NaN o 0.
Quindi, quando scrivi Age = Number(Age)
,
- L'età può essere assegnata con un numero appropriato (positivo o negativo), oppure
- NaN (NaN sta per
not a number
ed è considerato un tipo di dato in JS), oppure - 0 quando l'utente inserisce uno o più spazi.
Nella condizione del ciclo while, stiamo controllando se il valore inserito dall'utente non è valido. Cioè, is Age not a number?
o is Age less than 1?
.
L' ||
operatore utilizzato tra queste due condizioni restituirà true
se una qualsiasi di queste due condizioni è vera (infatti, se la prima condizione è vera, non si preoccupa nemmeno di controllare la seconda condizione e restituisce semplicemente vero). Restituisce false
se entrambe le condizioni sono false.
Quindi, se l'utente ha inserito un input non valido (numero negativo o spazio o stringa), chiediamo all'utente finché non inserisce un valore corretto.
Un ciclo while ha un'interruzione, guarda questo semplice esempio.
let a = 2;
while (a <100) {
console.log(a);
a *= 2;
if (a===16)
break;
}
Prova con do-while
:
let age, age2;
do {
age = prompt("How old are you?");
} while (age === "");
do {
age2 = prompt("Please Cofirm Your age");
} while (age2 === "" || age2 !== age);