不同浏览器的javascript解析器的输出是否相同?

时间:2010-05-13 04:26:40

标签: javascript parsing

假设有一段JavaScript代码受到不同浏览器的支持,例如IE和Firefox。不同浏览器的JavaScript解析器是否会生成相同的输出(即相同的AST)?

2 个答案:

答案 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子句是“本地”变量,并且与外部范围的范围不同。