検索

ホームページ  >  に質問  >  本文

javascript - js のクロージャーに関する問題。昨夜はそれに苦労しましたが、今ではほとんど死んでいるようです。

クロージャについて学び始めたばかりなので、理解できていないことがたくさんありました。図に示すように、コンソールに 未定義 が表示されるのはどうすればよいですか? return関数だけを実行したのに、実行結果が2つあるのはなぜですか?皆さん、詳しく説明してください~

迷茫迷茫2734日前646

全員に返信(6)返信します

  • 某草草

    某草草2017-06-05 11:15:08

    次の 2 つのコードを繰り返して実行できます
    var result = f1(); 変数は関数を指します var result = f1(); 變量指向函數
    console.log(result()) 其實可以轉話為 f1()()
    即函數執行 f1()返回的函數,即f2() 所以首先會執行 f1()下的f2() 函數 再執行f1()
    所以首先console.log(n)1
    在執行函數f1()時候return f2 ,但由於函數沒有對返回值,所以打印出undefinedconsole.log(result())実際、f1()() の会話を変更できます

    、つまり、f1() を実行することによって返される関数、つまり f2() なので、f1 が最初に実行されます () の下の f2() 関数が f1() を実行します🎜最初に >console.log(n)1 です🎜関数 f1() を実行すると、return f2 が返されますが、この関数は値を返さない場合、unknown が出力されます 🎜

    返事
    0
  • 世界只因有你

    世界只因有你2017-06-05 11:15:08

    基本的に

    リーリー

    f2 は値を返さないため、未定義です

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-06-05 11:15:08

    console.log(result())
    result() が f2() を呼び出すため、最初は 1 を出力します
    その後、result() には戻り値がないため、出力は未定義になります

    返事
    0
  • 为情所困

    为情所困2017-06-05 11:15:08

    http://www.liaoxuefeng.com/wi...

    これを読むことをお勧めします

    返事
    0
  • 大家讲道理

    大家讲道理2017-06-05 11:15:08

    最初の結果=f1(); このとき、result=f2;
    次に、結果であるf2を実行し、テストを実行していないため、nの値を出力します。は 1 なので、出力されるのは 1 です。 次に、 console.log(result()); を実行します。result() には戻り値がなく、未定義です。

    返事
    0
  • 世界只因有你

    世界只因有你2017-06-05 11:15:08

    console.log(console.log()) は未定義でなければなりません、兄貴

    返事
    0
  • キャンセル返事