1

このコードで何が起こっているのかを理解したかっただけで、ネストされた関数と高次、および return ステートメントの主題を深く検索しました。しかし、それでも私はこの疑問 (連続する 2 つの return ステートメントについては不明) に終止符を打ちたいと思っていました。

function higher_order(){
  return function addNum()
  {  
    return 1+1;
    return function subNum()
    {
      return 1-1;
    };
  };
}; 
alert(higher_order()()());
4

2 に答える 2

5

問題は、関数が最初の return ステートメントの後で実行を停止することです。yourは、数値 2 を返すhigher_orderfunctionを返します。addNumこれは呼び出し可能ではなく、3 番目の括弧で例外が発生します()

  • higher_order()関数を返しますaddNum()
  • addNum()数 2 を返します
  • 2( higher_order()()) は関数として呼び出すことができないため、例外が発生します。

alert(higher_order()())3 番目の呼び出しに使用される値を確認してみてください。

于 2014-05-25T20:29:38.817 に答える
1

// この方法を試してください:

function higher_order(){
    return function addNum(){
        return function subNum(){
            return 1-1;
        };
    };
};

higher_order() // 関数 addNum を返します

higher_order()() // 関数 subNum を返します

higher_order()()() // subNum (0) から返された値を返します

于 2014-05-25T20:34:50.100 に答える