Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript firefox上的函数表达式-不是预期结果_Javascript_Function Expression - Fatal编程技术网

Javascript firefox上的函数表达式-不是预期结果

Javascript firefox上的函数表达式-不是预期结果,javascript,function-expression,Javascript,Function Expression,上面的代码是函数表达式的一个示例,在Firefox28中返回1,而在Chrome中返回2(预期结果)。为什么firefox给出了错误的结果?这是一个函数提升的例子。使用相同函数名声明的任何函数,该名称的最后一个函数将获得优先权,即使该函数为null,也将使用该函数。 在大多数情况下,函数声明是在脚本执行之前处理的,但是,对于Firefox,情况并非如此,它将函数声明视为包含在if块中。可以是chrome在执行任何一行代码之前加载函数表达式,而当firefox的解释器到达函数的声明行时,firef

上面的代码是函数表达式的一个示例,在Firefox28中返回1,而在Chrome中返回2(预期结果)。为什么firefox给出了错误的结果?

这是一个函数提升的例子。使用相同函数名声明的任何函数,该名称的最后一个函数将获得优先权,即使该函数为null,也将使用该函数。
在大多数情况下,函数声明是在脚本执行之前处理的,但是,对于Firefox,情况并非如此,它将函数声明视为包含在if块中。

可以是
chrome
在执行任何一行代码之前加载函数表达式,而当firefox的解释器到达函数的声明行时,
firefox会这样做吗?如果chrome事先加载了这些表达式,第二个
foo()
声明将取代第一个声明?在FF。请注意,您拥有的是一个函数声明,而不是一个表达式。“[FF]接受它”,是的,但仅在函数声明位于
if
块中的情况下。当在
if
块之外声明时,FF将提升声明的函数以及其他浏览器。
if (true) {
  function foo(){ return 1; }
}
else {
  function foo(){ return 2; }
}
foo();