2017-12-31 129 views
-2

Ich brauche einen Cicle um prompt. Das Objekt der Eingabeaufforderung - nehmen Sie den Eingabewert des Kunden und drücken Sie ihn auf eval Funktion, um ein Ergebnis zu machen (Umwandlung der ganzen Zeichenfolge in Ziffern mit mathematischen Operatoren ('+', '*', etc ...)).Cicle um Prompt funktioniert nicht

Die Ernennung des Kreises - ist das Ergebnis der eval Funktion und zu überprüfen, ob eval (a) = digit ->prompt jedes Mal wiederholen, wenn Benutzereingaben in Prompt nicht-stellige Werte ('a ',', ', etc ...)

Der andere Teil des Codes nur zum Abfangen eines Fehlers.

do { 
    var a = prompt('your number', '10-2*4'); 
} while (eval(a) != 'number'); 

try { 
    console.log(eval(a)); //must display 2 
} catch (e) { 
    console.log('Error: ', e); 
} 
+1

Es heißt eine "Schleife", kein "Kreis". – Bergi

+1

'eval (a)! = 'Nummer' macht keinen Sinn. Diese Bedingung kann nur erfüllt werden, wenn Sie die Zeichenfolge '" number "' eingeben. – Bergi

Antwort

1

Ihr Test von eval(s) != 'number' sollte so etwas wie typeof eval(+s) !='number'

Sie es eine rekursive Funktion machen könnte:

function doPrompt(){ 
 
    try { 
 
    // if this line throws error will go to catch 
 
    var res = eval(prompt('your number', '10-2*4')); 
 
    // do it again if we don't have a number, or return number 
 
    return typeof +res ==='number' ? +res : doPrompt() 
 
    }catch(e){ 
 
    return doPrompt(); 
 
    } 
 
}; 
 

 
var res = doPrompt(); 
 

 
console.log(res)

ein <input> Dies wäre viel sauberer mit stattdessen, was eine bessere Anzeige ermöglichen würde Fehler für den Benutzer. Verwenden prompt ist nicht sehr flexibel

Verwandte Themen