JavaScript语法中的歧义

时间:2011-07-25 06:11:58

标签: javascript json syntax

  

可能重复:
  Why the open quote and bracket for eval('(' + jsonString+ ')') when parsing json string

根据Wikipedia entry on JSON,如果您想用 eval 解析JSON对象,请说:

{
    "firstName": "John",
    "lastName": "Smith",
    "age": 25
}

您需要通过以下方式完成:

var obj = eval("(" + JSON + ")");

如果没有括号环绕JSON文本,它将在JavaScript的语法中触发 歧义

我不太确定这种歧义是什么,并且会欣赏一些意见。

1 个答案:

答案 0 :(得分:0)

我不知道我是否称之为“含糊不清”。 JSON只是一个javascript(真正的ECMAScript)对象文字,所以它看起来像“{...}”。但是,在ECMAScript中,语句不能以大括号“{”字符开头。

因此添加了分组运算符以使表达式为“({...})”。这会删除语法错误,因此可以将其传递给eval。

此外,eval'ing代码意味着许多错误只是被吞下,如果有错误并且字符串是实质性的,你会发现它很难调试。