假设有一段JavaScript代码受到不同浏览器的支持,例如IE和Firefox。不同浏览器的JavaScript解析器是否会生成相同的输出(即相同的AST)?
答案 0 :(得分:2)
不同浏览器的JavaScript解析器是否会生成相同的输出
不,不总是,不同的浏览器有不同的javascript解析器,IE有JScript引擎,Mozilla有自己的Javascript引擎。
例如,如果您运行以下代码
'x'.split(/(x)/).length
Firefox返回3,而IE返回0
答案 1 :(得分:2)
理论上是的,但实际上他们没有。例如,以下代码在IE与Firefox中略有不同:
var e = 10;
try
{
e.something();
}
catch (e)
{
}
alert(e);
IE将打印“[object]”而其他浏览器将打印“10”,因为IE以外的浏览器假定catch子句是“本地”变量,并且与外部范围的范围不同。