0
(function f(){ 
  function f(){ return 0; } 
  console.log(f()); 
  function f(){ return 1; } 
})();

上記のコードで結果として 1 が返されるのはなぜですか?

4

2 に答える 2

0

ここでは、IIFE は完全に無関係です。javascript では関数と変数が巻き上げられているため、次のことができます。

hoisted(); // logs "foo"

function hoisted() {
  console.log("foo");
}

関数を定義する前に呼び出す場所。
あなたの例では、巻き上げた後のコードは次のようになります

  function f(){ return 0; } 
  function f(){ return 1; } 

  console.log(f());  // logs "1"

MDN への巻き上げ

于 2016-02-28T17:53:21.433 に答える