Javascript firefox上的函数表达式-不是预期结果
上面的代码是函数表达式的一个示例,在Firefox28中返回1,而在Chrome中返回2(预期结果)。为什么firefox给出了错误的结果?这是一个函数提升的例子。使用相同函数名声明的任何函数,该名称的最后一个函数将获得优先权,即使该函数为null,也将使用该函数。Javascript firefox上的函数表达式-不是预期结果,javascript,function-expression,Javascript,Function Expression,上面的代码是函数表达式的一个示例,在Firefox28中返回1,而在Chrome中返回2(预期结果)。为什么firefox给出了错误的结果?这是一个函数提升的例子。使用相同函数名声明的任何函数,该名称的最后一个函数将获得优先权,即使该函数为null,也将使用该函数。 在大多数情况下,函数声明是在脚本执行之前处理的,但是,对于Firefox,情况并非如此,它将函数声明视为包含在if块中。可以是chrome在执行任何一行代码之前加载函数表达式,而当firefox的解释器到达函数的声明行时,firef
在大多数情况下,函数声明是在脚本执行之前处理的,但是,对于Firefox,情况并非如此,它将函数声明视为包含在if块中。可以是
chrome
在执行任何一行代码之前加载函数表达式,而当firefox的解释器到达函数的声明行时,firefox会这样做吗?如果chrome事先加载了这些表达式,第二个foo()
声明将取代第一个声明?在FF。请注意,您拥有的是一个函数声明,而不是一个表达式。“[FF]接受它”,是的,但仅在函数声明位于if
块中的情况下。当在if
块之外声明时,FF将提升声明的函数以及其他浏览器。
if (true) {
function foo(){ return 1; }
}
else {
function foo(){ return 2; }
}
foo();