⊗jsPmFCCl 274 of 505 menu

JavaScriptにおけるクロージャと即時関数実行

ご存知の通り、無名関数をその場で実行し、その結果を変数に代入することができます:

let result = function() { return '!'; }(); console.log(result); // '!'を出力

この場合、即時実行関数を括弧で囲むことがよくあります(必須ではありませんが)。 これは、関数がその場で実行されることを明確にするためです:

let result = (function() { return '!'; })(); console.log(result); // '!'を出力

ここで、即時実行関数の結果が別の無名関数を返すようにしてみましょう:

let func = (function() { return function() { console.log('!'); } })(); func(); // '!'を出力

返される関数が、クロージャ内に変数 num を保持するようにしてみます:

let func = (function() { let num = 1; return function() { console.log(num); } })();

num++ を追加すると、関数 func は完成したカウンターになります:

let func = (function() { let num = 1; return function() { console.log(num); num++; } })(); func(); // 1を出力 func(); // 2を出力 func(); // 3を出力 func(); // 4を出力 func(); // 5を出力

答えを見ずに、自分で同じカウンターを実装してみてください。

カウンターの動作を、5までカウントした後、再び最初からカウントを始めるように修正してください。

日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否