为什么' eval'执行给出错误?

时间:2015-07-20 07:09:37

标签: javascript eval

我在HTML部分中有以下代码:

<script>
    var trainings = {'M':new PlayerTraining(18369,22,355),'D':new PlayerTraining(9412,6,118)};
</script>

此代码运作良好,并且“#Player; PlayerTraining&#39;是在上面引用的一个js文件中定义的类。

但是当我执行时:

<script>
    alert(eval("{'M':new PlayerTraining(18369,22,355),'D':new PlayerTraining(9412,6,118)}"));
</script>

我收到以下错误:

  

Uncaught SyntaxError:意外的令牌:

我做错了什么?最后,我需要将该哈希值(从WebService接收)分配给变量。怎么做?

请告知。

3 个答案:

答案 0 :(得分:1)

您可以像这样评估对象。

与您的示例类似,这将引发语法错误:

{ a: new Date(), b: new Date() }

这是因为你错过了一个变量赋值:

var x = { a: new Date(), b: new Date() }

但是,您不应该首先使用evalIt's unsafe, and inefficient

答案 1 :(得分:1)

要使其工作,您应该将表达式包装在括号中:

alert(eval("({'M':new PlayerTraining(18369,22,355),'D':new PlayerTraining(9412,6,118)})"));

并将结果分配给变量,如下所示:

var someVar = eval("(" + webServiceResponse + ")");

答案 2 :(得分:0)

eval内将您的对象分配给var:

eval("var myVar = {'M':new PlayerTraining(18369,22,355),'D':new PlayerTraining(9412,6,118)};");
alert(myVar);

但无论如何,如果你把对象作为字符串,你可以解析为json。