3
if (true) {
  function foo(){ return 1; }
}
else {
  function foo(){ return 2; }
}
foo();

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

4

1 回答 1

0

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

于 2015-01-03T08:26:15.030 回答