火狐浏览器上的函数表达式 - 不是预期的结果

function expression on firefox - not expected result

本文关键字:结果 函数 表达式 火狐浏览器      更新时间:2023-09-26
if (true) {
  function foo(){ return 1; }
}
else {
  function foo(){ return 2; }
}
foo();

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

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