根据ECMA-262 Specification,以下语句返回1
:
eval("1;;;;;")
eval("1;{}")
eval("1;var a;")
确保:
StatementList的值是StatementList中生成Statement的最后一个值。
你能解释一下这些不同的回报吗?
eval("{}") // undefined
eval("var a={}; a;") // {}
eval("var a={};") // undefined
1;
和{};
之间的区别是什么?
答案 0 :(得分:6)
单独留下,{}
被解释为块,而不是对象。它不包含任何语句,因此不会影响eval("1;{}")
的值。要强制将其解释为对象,可以使用括号:
eval("1;({})"); // {}
答案 1 :(得分:2)
我认为eval
正在将{}
解释为代码块的分隔符,因此没有内在价值。