eval(" {}")vs eval(" x = {}"),一个返回undefined,而另一个{}

时间:2014-12-24 16:53:24

标签: javascript

eval("x={}")

  -->  {}

eval("{}")

  -->  undefined

为什么?

我想从评估字符串中返回一个对象。

3 个答案:

答案 0 :(得分:9)

{}被解析为空块语句,而不是对象文字表达式。

要强制将其解析为表达式,请将其包装在括号中。

答案 1 :(得分:4)

{}被解释为不包含任何语句的块,其值为undefinedx={}强制将{}作为表达式(空对象)进行求值,因为您无法将块指定给任何东西。然后赋值运算符返回已分配的值。

获得相同效果的更简洁方法是将表达式包装在括号中。 eval("({})")为我提供了正确的结果。

答案 2 :(得分:0)

的eval(" {} + {}&#34)
JavaScript中有很多错误 资料来源:https://www.destroyallsoftware.com/talks/wat