сравнивая два объекта eval () в javascript - PullRequest
0 голосов
/ 25 марта 2012

Прежде всего, я изучаю JS около 2-3 часов.Я потерял след.Сейчас 5 утра.Я на хакатоне и пытаюсь написать свое Java-приложение как веб-приложение.У меня 7 часов.Любая помощь будет принята с благодарностью.Я также знаю, что Eval - ужасная идея.Тем не менее, сейчас это самая легкая вещь для моей цели.При этом:

отредактируйте для ясности Итак, по сути, у меня есть небольшая игра в обучающий код в стиле палача: у меня есть библиотека очень коротких, не глючных фрагментов кода.Программа вводит ошибки (в основном, пропуски) в код и отображает код ошибки.Затем игрок пытается либо исправить код, либо, если он выберет, написать другой фрагмент, который отражает ожидаемый результат отображаемого глючного кода.Они вводят свой ответ в текстовой области, а затем программа сравнивает результаты выполнения обоих фрагментов кода (ошибочный фрагмент и предоставленный пользователем фрагмент).Пользователь выигрывает, если выходы совпадают.

Может быть, есть способ сравнить результат с другой переменной, содержащей другой eval?

как в:

editдля ясности Логика следующего фрагмента кода:

Существует переменная result, которую я пытаюсь использовать для ссылки на результат вызова eval () значения (возможно, с ошибочным кодом).фрагмент) в области ввода (game.input).Массив goodCode содержит хороший код;т.е. не глючный код.Я хочу вызвать eval () для обоих фрагментов кода (один из goodCode и один из game.input) и сравнить результаты их выполнения.если их выполнения одинаковы, программа выдаст успешное выполнение и сообщение с надписью «победитель».

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>

Я уверен, что моя терминология действительно не соответствует моему объяснению.Извини за это.Любая помощь будет оценена.

1 Ответ

2 голосов
/ 25 марта 2012

Если оба фрагмента кода возвращают значение, вы можете сравнить их. Но document.write() и т. Д. Не возвращают ничего полезного, единственное, что вы можете сделать, это сравнить сам код без его выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...