为什么我的代码执行return语句后定义的函数?

Nem*_*Nem 3 javascript function

我有这段代码:

(function f(){
    function f(){ return 1? }
    return f()?
    function f(){ return 2? }
 })()?
Run Code Online (Sandbox Code Playgroud)

为什么这段代码打印'2'?

Que*_*tin 6

函数声明被提升,因此在return评估语句之前都会处理它们.

第二个函数会覆盖第一个函数,因为它们具有相同的名称.