2017-09-01 1 views
0

Utiliser eval pour calculer la chaîne. Est-il possible de vérifier si les données transmises à EVAL() sont valides.Vérifier l'équation d'évaluation

var apa = "12/5*9+9.4*2"; 
alert(eval(apa)); 

Si apa = "asaa + 3 - 5"; par exemple, la console va dire

Uncaught ReferenceError: asaais not defined at eval

+0

Définir "valide". –

+1

Je pense que vous pouvez vérifier si elle jette. – lilezek

+0

Vous pouvez l'analyser .... Il n'y a aucun moyen de savoir qu'il est valide avant de l'exécuter. Vous pouvez ... – epascarello

Répondre

1

juste vérifier si le résultat de l'évaluation est définie en premier. Si oui, l'expression était invalide.

var apa = "12/5*9+9.4*2"; 
var apaResult = eval(apa); 
if (apaResult != undefined) { 
    alert(apaResult); 
} else { 
    alert("Could not evaluate expression") 
} 
+0

Mais cela donne une erreur dans la console," ReferenceError: asaa n'est pas défini ". Ou il n'y a aucun moyen de se débarrasser de cela? – VGranin

+0

Vous pouvez placer eval dans un bloc try catch. [jsfiddle] (https://jsfiddle.net/z27my96g/) –

+0

essayez { eval (apaResult); } me donne la même erreur ... "ReferenceError: asaa n'est pas défini at eval" – VGranin