Noh | エンジニア向け情報共有コミュニティ
Signup / Login

JavaScriptの||, &&, ?? 演算子の使い分け(論理演算子, null合体演算子)

javascript
typescript

投稿日: 2025/07/05

JavaScriptの論理演算子とnull合体演算子について説明します。

主要な演算子

|| (論理OR)

const result = a || b;
  • aがfalsyな値(false, 0, "", null, undefined, NaN)ならbを返す
  • aがtruthyならaを返す

&& (論理AND)

const result = a && b;
  • aがfalsyならaを返す
  • aがtruthyならbを返す

?? (null合体演算子)

const result = a ?? b;
  • aがnullまたはundefinedならbを返す
  • それ以外はaを返す

実際の使用例

// デフォルト値の設定 const name = user.name || "匿名"; // 空文字でも"匿名"になる const name2 = user.name ?? "匿名"; // nullやundefinedの時のみ"匿名" // 条件付き実行 isLoggedIn && redirectToHome(); // ログイン済みなら実行 // 数値の場合の違い const count = 0; console.log(count || 5); // 5 (0はfalsyなので) console.log(count ?? 5); // 0 (0はnullでもundefinedでもないので)

その他の似た演算子

||= (論理OR代入)

x ||= y; // x = x || y; と同じ

&&= (論理AND代入)

x &&= y; // x = x && y; と同じ

??= (null合体代入)

x ??= y; // x = x ?? y; と同じ

? : (三項演算子)

const result = condition ? valueIfTrue : valueIfFalse;

使い分けのポイント

  • ||: 任意のfalsyな値に対してデフォルト値を設定したい場合
  • ??: null/undefinedの時のみデフォルト値を設定したい場合(0や空文字は有効な値として扱いたい)
  • &&: 条件が真の時のみ何かを実行したい場合

特に||??の違いは重要で、0や空文字を有効な値として扱う必要がある場合は??を使うのが適切です。

yosi

Noh を作ってるエンジニア。

目次