JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで関数自身を内部から参照する方法(再帰呼び出しの基本)

JavaScriptでは、関数の内部からその関数自身を参照して呼び出すことができます。このような呼び出し方は「再帰呼び出し」と呼ばれ、同じ処理を反復的に実行したいケースでよく使われるテクニックです。
以下は、ボタンをクリックすると関数が自分自身を呼び出すサンプルコードです。

コード例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
   body {
      font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
   }
   .result {
      font-size: 20px;
      font-weight: 500;
      color: blueviolet;
   }
</style>
</head>
<body>
<h1>Referring JavaScript function from within itself</h1>
<div class="result"></div>
<br />
<button class="Btn">Click Here</button>
<h3>Click on the above button to call the printHello() function</h3>
<script>
   let resEle = document.querySelector(".result");
   let BtnEle = document.querySelector(".Btn");
   function printHello(num) {
      for (let i = 0; i < num; i++) {
         resEle.innerHTML += "Hello World <br>";
         printHello(--num);
      }
   }
   BtnEle.addEventListener("click", () => {
      printHello(3);
   });
</script>
</body>
</html>

実行結果

ページを開くと、次のような画面が表示されます。

JavaScriptで関数自身を内部から参照する方法(再帰呼び出しの基本)

「Click Here」ボタンをクリックすると −

JavaScriptで関数自身を内部から参照する方法(再帰呼び出しの基本)

コードのポイント

この例では、printHello() 関数の中でforループを使用し、ループ処理の中から printHello() 自身を再度呼び出しています。呼び出しが行われるたびに引数 num の値が減算されていくため、条件を満たさなくなった時点で再帰的な呼び出しは自然に終了します。

また、ボタン要素には addEventListener() を使ってクリックイベントを登録しており、ボタンがクリックされると printHello(3) が実行され、画面上に「Hello World」という文字列が繰り返し表示される仕組みになっています。

  1. JavaScriptでのメソッド借用:call()・apply()・bind()の使い方を解説

    JavaScriptでは、call()、apply()、bind()という3つのメソッドを使うことで、あるオブジェクトが持つメソッドを別のオブジェクトが「借用」できます。これは、本来そのメソッドを持たないオブジェクトに対して、thisの参照先を差し替えてメソッドを実行できる便利なテクニックです。 3つのメソッドの違い call():引数をカンマ区切りで個別に渡し、即座に関数を実行します。 apply():引数を配列(または配列風オブジェクト)として渡し、即座に関数を実行します。 bind():thisを固定した新しい関数を返すだけで、即座には実行されません。返された関数は後から好きなタイミン

  2. 【JavaScript】外部関数の内側からイベントリスナーを削除する方法

    JavaScriptで、外部関数の内側からイベントリスナーを削除したい場合は、removeEventListener()メソッドを使用します。 リスナーを削除する際のポイント removeEventListener()でリスナーを正しく削除するには、addEventListener()で登録したときと同じ関数への参照を渡す必要があります。そのため、無名関数(匿名関数)をそのまま登録してしまうと、後から削除できなくなる点に注意しましょう。本記事のサンプルコードでは、登録時に名前付き関数funを渡し、それをそのまま外部関数へ引き渡すことで、内側からの削除を実現しています。 コード例 以下が実際