回答
eval('({"suc":true})')
这实际上没有错,它会被正确评估。
当试图评估解释器看到花括号,并认为它是一个块的开始。用括号括起来使其成为表达式并正确初始化对象。
我不知道你想达到什么,但从你的例子第一个是正确的,第二个抛出语法错误。
eval('({"suc":true})')
相同({"suc":true})
和JavaScript解释为:
因此,它与suc
属性和相关值true
返回新对象。
eval('{"suc":true}')
相同{"suc":true}
和被解释为:如果更改"suc"
到suc
(没有括号),那么它会工作
{ // <- this is block begining
"suc": // <- this is label, but incorrect, as it is given as string, not literally
true // <- this is expression
}
,但它是不一样的第一个例子。
UPDATE:
至于为什么阵列不需要括号:存在JavaSript没有其他的结构,它会开始比阵列之外[
字符。
会有与{
没有问题,如果它会在上下文中显示并预计值是这样的:
eval('var a = {"succ": true}')
它的源代码(所以不仅在eval块)一样的:你不能使用短符号({ .. }
)创建对象,而不将其分配给某个变量或作为值传递给函数(返回语句...)。
任何想法,而阵列不需要括号:var arr = eval('[true,false']); – 2012-08-20 08:47:52
@lzprgmr看到我更新的答案。 – MBO 2012-08-20 11:25:18
您是否尝试过使用JSON.parse('{"suc":true}))
?
- 1. 的Javascript:在EVAL
- 2. 的JavaScript逃避EVAL
- 3. JavaScript eval
- 4. 的jquery的eval JavaScript文件
- 5. 的Javascript的eval错误
- 6. 路过的EVAL的JavaScript
- 7. 问题的的eval()在javascript
- 8. 的JavaScript的eval替代
- 9. 的JavaScript的eval()和安全
- 10. 的Javascript的eval()重构
- 11. Javascript eval querystring
- 12. Javascript eval questions
- 13. JavaScript隐藏eval
- 14. javascript eval问题
- 15. javascript eval方法
- 16. JavaScript eval()语法
- 17. JavaScript的jQuery和使用eval
- 18. Javascript的Eval代码问题
- 19. JavaScript的eval函数解码
- 20. JavaScript的eval()函数与`this`
- 21. 使用eval的Javascript模块();
- 22. javascript eval方法的语法
- 23. 蒙戈的javascript --eval失败
- 24. Javascript json eval()注入
- 25. 半沙盒Javascript eval
- 26. Javascript - eval()`{}`表达式
- 27. 的Javascript的eval()异常 - 行号
- 28. 的eval的JavaScript,检查语法错误
- 29. 带参数的函数的Javascript eval()
- 30. 在JavaScript中指定eval()的范围?
难道不是相反吗? – 2009-12-08 06:24:59