Javascript 邪恶的评估+;括号示例?

Javascript 邪恶的评估+;括号示例?,javascript,eval,Javascript,Eval,我在网站上读了很多问题,但没有理解括号的问题 eval( '{a:alert(1)}'); //alert 1 但这一警报1: eval( '('+'{a:alert(1)}'+')'); //alert 1 那么“()”对我有什么帮助呢 我已经知道,()使代码被理解为epxpression,而不是语句 但我看不出我的样本会有什么帮助 你能提供一个样本吗?考虑一下: eval("({a: 'my great object'}.a);"); 及 如前所述:第二个是带有so标签的代码块。a根本

我在网站上读了很多问题,但没有理解括号的问题

eval( '{a:alert(1)}'); //alert 1
但这一警报1:

eval( '('+'{a:alert(1)}'+')'); //alert 1
那么
“()”
对我有什么帮助呢

我已经知道,
()
使代码被理解为epxpression,而不是语句

但我看不出我的样本会有什么帮助

你能提供一个样本吗?

考虑一下:

eval("({a: 'my great object'}.a);");


如前所述:第二个是带有so标签的代码块。a根本没有任何意义。

你自己已经回答了这个问题:括号用于解释对象文字(在表达式中)而不是代码块。@RobW如果是相同的,为什么我需要
()
?我看不出有什么好处。(我一定是错了)。你能提供一个对我的网站有害的例子,以及()如何帮助我吗?这取决于你想要什么。你的意图是什么
{a:alert(1)}
是一个带有标签a的代码块,
({a:alert(0)})
是一个带有键a的对象文字,其中包含
alert(0)
@RobW的结果。我想看看一个对我的站点有害的示例,看看
()
如何帮助解决它。您自己已经给出了这个示例,我在第三篇评论中解释了这些例子之间的区别。没什么可解释的了。如果您想了解更多信息,请查看Stack Overflow以获取有关此(流行)主题的现有答案。例如:neo,IMHO,
()
仅用于json…对吗?但是
{a:'''''}
不是json…Im jsut有一个问题,那就是在评估json obj.use json.parse时为什么要使用()来代替。(寻找名人:eval是邪恶的)。不仅仅是json:请参见
函数a(){return(这里是endl!){a:'a'};}a()未按预期工作(分号插入+此处的命名代码块)
eval("{a: 'my great object'}.a;");