In erster Linie habe ich gelernt, JS für ca. 2-3 Stunden. Ich habe den Überblick verloren. Es ist 5 Uhr morgens. Ich bin auf einem Hackathon und versuche, meine Java-Anwendung als Webapp zu schreiben. Ich habe 7 Stunden. Jede Hilfe würde sehr geschätzt werden. Ich weiß auch, dass Eval eine schreckliche Idee ist. Aber es ist momentan das Einfachste für meinen Zweck. Das sagte:Vergleich zwei eval() Objekte in Javascript
für Klarheit bearbeiten Also im Wesentlichen habe ich ein wenig Henker-Stil lernen, Codierung Spiel: Ich habe eine Bibliothek von sehr kurzen, nicht-Buggy Code-Schnipsel. Das Programm führt Bugs (vor allem Auslassungen) in den Code ein und zeigt den fehlerhaften Code an. Der Player versucht dann entweder den Code zu korrigieren oder, falls er dies wünscht, ein anderes Snippet zu schreiben, das das beabsichtigte Ergebnis des angezeigten fehlerhaften Codes widerspiegelt. Sie geben ihre Antwort in ein Textfeld ein, und das Programm vergleicht dann die Ergebnisse der Ausführung beider Code-Snippets (Buggy-Snippet und vom Benutzer bereitgestelltes Snippet). Der Benutzer gewinnt, wenn die Ausgaben übereinstimmen.
Wäre es möglich, das Ergebnis mit einer anderen Variablen zu vergleichen, die ein anderes Eval enthält?
wie in:
bearbeiten für Klarheit Die Logik hinter dem folgenden Code-Schnipsel ist:
Es ist eine Variable, Ergebnis, das ich verwenden wird versuchen, das Ergebnis des Aufrufs zu referenzieren eval() ein Wert (möglicherweise Buggy Code-Snippet) in einem Eingabebereich (game.input). Das Array goodCode enthält den guten Code; d. h. nicht fehlerhafter Code. Ich möchte eval() in beiden Codeschnipsel (die von goodCode und die von game.input) aufrufen und die Ausgabe ihrer Ausführungen vergleichen. Wenn ihre Ausführungen identisch sind, gibt das Programm die erfolgreiche Ausführung aus, und eine Nachricht, die "Gewinner" sagt.
goodCode = new Array("document.write('<b>Hello World</b>');")
var goodResult = eval(goodCode[0])
function executeJS()
{
var game = document.forms['game'];
var result = eval(game.input.value);
var answer = eval(goodCode[0]);
if (result === goodResult)
{
game.execute.value = result;
document.write("winner!")
}
}
<head>
<body>
<form name="game">
<textarea type=text name="input" rows="10" cols="30" value=""></textarea><br>
<input type="button" value="guess" onclick="executeJS();"
</form>
</body>
</head>
Ich bin sicher, meine Terminologie ist wirklich in meiner Erklärung. Das tut mir leid. Jede Hilfe wäre willkommen.
Sie sollten wirklich etwas über moderne JavaScript-Entwicklung lesen. Ich sehe so viele schlimme Dinge in Ihrem Code: 'new Array()' anstelle von '[]', Zugriff auf Dinge über den Namen statt der ID, Verwendung von 'eval()', Inline Event Handlern. – ThiefMaster
@gfpaste Es ist nicht einmal klar, was Ihr Problem ist. Wenn ich auf deinen Code schaue, bin ich verwirrt. Nichts davon macht Sinn. (Nun, es ist klar, was Sie zu haben scheinen, aber ... JS funktioniert nicht so und kann nicht so gemacht werden.) – Tomalak
@gfpaste: Was wollen Sie erreichen? Sie haben ein Problem mit 'eval', aber vielleicht gibt es eine sehr einfache Lösung, die überhaupt kein' eval' benötigt. – Zeta