比较javascript中的两个eval()对象

时间:2012-03-25 08:42:49

标签: javascript compare eval

首先,我已经学习了大约2-3个小时的JS。我失去了轨道。现在是凌晨5点。我是一个黑客马拉松,并试图将我的Java应用程序编写为webapp。我有7个小时。任何帮助将不胜感激。我也知道eval是个糟糕的主意。但是,这对我来说是最简单的事情。话虽如此:

编辑以保持清晰基本上,我有一个小型的刽子手式学习编码游戏:我有一个非常简短,无错误的代码片段库。该程序向代码引入了错误(主要是遗漏),并显示错误的代码。然后,播放器尝试更正代码,或者,如果他们选择,则编写一个不同的片段,该片段反映显示的错误代码的预期结果。他们在textarea中输入他们的答案,然后程序比较两个代码片段(buggy snippet和用户提供的片段)的执行结果。如果输出匹配,则用户获胜。

是否有可能将结果与另一个包含另一个eval的变量进行比较?

如:

为清晰起见,

编辑以下代码段背后的逻辑是:

有一个变量result,我试图用它来引用eval()调用输入区域(game.input)中的值(可能有错误的代码片段)的结果。数组goodCode包含好的代码;即非马车代码。我想在两个代码片段(来自goodCode的一个片段和来自game.input的片段)上调用eval(),并比较它们的执行输出。如果他们的执行相同,程序将输出成功执行,并显示一条消息“胜利者”。

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 个答案:

答案 0 :(得分:2)

如果两个代码段都返回了一个值,您可以对它们进行比较。但是document.write()等不会返回任何有用的东西,你唯一可以做的就是比较代码本身而不执行它。