2016-10-17 4 views
3

Ich mache dies für ein Taschenrechner-Projekt, ich möchte überprüfen, ob die Operation gültig ist oder nicht, irgendwie kann ich nicht nach dem booleschen Wert eval suchen, wenn es false ist? auf der Konsole:Wie überprüfe ich den booleschen Wert auf eval() oder wenn eine arithmetische Operation falsch ist?

Boolean(eval('2+2(9.1-)9')); 
Boolean(2+2(9.1-)9); // Both operations return unexpected token 

im Gegensatz zu Boolean(2+2) < - gibt true. Hilfe?

+3

Warum verwenden Sie eval in dieser Situation? - Auch '2 + 2 (9.1-) 9' ist ungültig – evolutionxbox

+0

Was möchten Sie tun? '2 + 2 (9.1-) 9' macht keinen mathematischen Sinn. –

+0

Und was genau bedeutet '2 + 2 (9.1-) 9'? – domyos

Antwort

0

Wenn ich Ihre Frage richtig verstanden habe, ist das einzige, was Sie wissen wollen, "Ist das ein gültiger Ausdruck". Eine sehr einfache Möglichkeit, dies zu überprüfen, ist die Verwendung von eval(), wie Sie es hier getan haben, und es in eine try zu legen, und sehen, ob irgendein Fehler auftritt. Zum Beispiel könnten Sie schreiben:

try { 
    eval('2+2(9.1-)9'); 
    valid = true; 
} catch (e) { 
    valid = false; 
} 

Dann wird die Variable valid enthält true, wenn der Ausdruck gültig ist, und false wenn es nicht ist.

Warnung mit eval() obwohl: Jeder gültige Code besteht diesen Test, nicht nur mathematische Ausdrücke: Plus, dieser Code wird ausgeführt. Sei vorsichtig, welche Saiten du gibst.

1

Sie eigentlich nicht brauchen, den Code zu bewerten, um zu sehen, ob sie gültig ist - nur try die Schaffung eines Function:

function checkIt() { 
 
    var fn 
 

 
    try { 
 
    var fn = new Function(document.getElementById("code").value) 
 
    alert("Great, that's a valid piece of code!") 
 
    } catch (e) { 
 
    alert("That's not a valid piece of code.") 
 
    } 
 
}
<input id="code"> 
 
<button onclick="checkIt()">Check it</button>

Zum Beispiel versuchen, "123", " gültig ", und" 'nicht [gültig !!! ".

Obwohl wenn Sie sind wird es sofort zu bewerten, wenn es gültig ist, sollten Sie wahrscheinlich nur überprüfen, ob der Fehler ein Syntaxfehler ist, oder anders.

function doIt() { 
 
    var fn 
 

 
    try { 
 
    var result = eval(document.getElementById("code").value) 
 
    alert("The result is: " + result) 
 
    } catch (e) { 
 
    if (e instanceof SyntaxError) { 
 
     alert("That's not a valid piece of code.") 
 
    } else { 
 
     alert(e.message) 
 
    } 
 
    } 
 
}
<input id="code"> 
 
<button onclick="doIt()">Check it</button>

Zum Beispiel versuchen, die gleichen Dinge, die Sie vorher versucht und sehen, wie dies verhält.

Verwandte Themen