0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[JavaScript] コールバック関数とは_v2

Posted at

概要

コールバック関数とは、関数に渡される関数のことです。
渡された関数は、呼び出し側によって適切なタイミングで実行されます。

つまり、

  • コールバック関数は「処理を渡す側が定義する関数」
  • 呼び出す側は「渡された関数を実行するシステムやメソッド」

の役割を持ちます。

目次

基本構文

JavaScript
// 配列のfilterで条件を渡すコールバック関数
const numbers = [1, 2, 3, 4, 5];
const result = numbers.filter(x => x > 2);
console.log(result); 
// 出力結果 [3, 4, 5]
  • x => x > 2コールバック関数
  • filter メソッドが 呼び出す側

コールバック関数の特徴

  1. 渡す側が関数を定義する

    • 例: x => x > 2() => console.log("Hello")
    • 処理内容を渡す側で自由に定義できる
  2. 呼び出す側が関数を実行する

    • 例: filtersetTimeoutaddEventListener
    • 適切なタイミングで関数を呼び出す
  3. 第一級オブジェクトとして扱える

    • 関数を変数に代入したり、他の関数に渡したりできる
  4. 書き方に柔軟性がある

    • 通常関数、無名関数、アロー関数などで定義可能

活用例

配列のfilterで使用

JavaScript
const numbers = [1, 2, 3, 4, 5];
const filtered = numbers.filter(x => x > 2);
console.log(filtered); 
// 出力結果 [3, 4, 5]
  • x => x > 2 がコールバック関数
  • filter が呼び出す側として、配列の各要素に対して実行する

ReactコンポーネントでsetTimeout

JavaScript
import { useEffect, useState } from "react";

export default function TimerComponent() {
  const [message, setMessage] = useState("待機中");

  useEffect(() => {
    // コールバック関数は渡す側で定義
    const timer = setTimeout(() => {
      setMessage("3秒経過");
    }, 3000);

    return () => clearTimeout(timer);
  }, []);

  return <div>{message}</div>;
}
  • () => { setMessage("3秒経過"); } がコールバック関数
  • ReactのuseEffect/setTimeoutが呼び出す側として、3秒後に実行する
  • 実際のUI更新の流れをイメージしやすい

Reactコンポーネントでイベントハンドラ

JavaScript
import { useState } from "react";

export default function ButtonComponent() {
  const [count, setCount] = useState(0);

  return (
    <button onClick={() => setCount(count + 1)}>
      クリック回数: {count}
    </button>
  );
}
  • () => setCount(count + 1) がコールバック関数
  • ボタンのクリックイベントが呼び出す側として、クリック時に実行する
  • Reactコンポーネントレベルでのコールバック関数利用例

まとめ

コールバック関数(渡す側が定義) 呼び出す側
配列filter x => x > 2 filter メソッド
setTimeout (React) () => { setMessage(...) } タイマーシステム
ボタンクリック (React) () => setCount(...) イベントシステム
  • コールバック関数は、処理を渡す側で定義して、呼び出す側に実行してもらう関数
  • Reactコンポーネントでも、UI更新やイベントハンドラで頻繁に使用される

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?