650*_*502 12 javascript internet-explorer-9
有什么理由吗?
eval("(function(x){return x*x;})")
Run Code Online (Sandbox Code Playgroud)
没有返回IE9的功能?
这是JScript解析器中的一个错误.除非您处于兼容性或Quirks模式,否则不应该在IE9中发生.
IE8将函数表达式误解为函数声明,导致它无法返回任何内容.以前在这个问题中提到过.
您可以使用其他一种典型方法来解决它,使JScript解析器不构成表达式与语句的构成,例如:
eval('[function(x){return x*x;}][0]')
eval('0?0:function(x){return x*x;}')
Run Code Online (Sandbox Code Playgroud)
由于解析器错误,IE eval无法直接评估函数.
相反,您应该使用Function构造函数:
new Function("x", "return x * x;")
Run Code Online (Sandbox Code Playgroud)
或者,您可以将eval'd表达式包装在一个数组中:
eval("[ function(x){return x*x;} ][0]")
Run Code Online (Sandbox Code Playgroud)
IE不反对eval包含函数的数组或对象.