0

以下は、JavaScript クロージャーに関する Mozilla のコード例です。

function makeFunc() {
  var name = "Mozilla";
  function displayName() {
    alert(name);
  }
  return displayName;
}

var myFunc = makeFunc();
myFunc();

displayName()内部関数を変数としてdisplayName、つまり括弧なしで返すのはなぜですか?

4

4 に答える 4

2

括弧がある場合return displayName;、関数自体を返すのと同じように、`makeFunc' 内で関数 displayName を呼び出します。

于 2013-08-15T23:03:23.453 に答える
2

return displayName()だろう

  1. var myFuncが設定されている行でアラートを呼び出します。
  2. 戻りundefinedます。

return displayName(括弧なし) は関数自体を返しますが、前者 (括弧あり) は関数を呼び出し、関数自体が返すものは何でも返します。function displayName明示的な return ステートメントがないため、暗黙の戻り値の型はですundefined

于 2013-08-15T23:04:49.370 に答える
0

そのコード サンプルでmakeFuncは、​​ が呼び出され(括弧が付いています)、その戻り値が に割り当てられmyFuncます。

その関数の中で、関数return displayName参照してそれを返しています。

最終結果はmyFunc、事前定義されたスコープ ( where ) を持つ関数であり、name="Mozilla"後で呼び出すことができます。

于 2013-08-15T23:02:09.690 に答える