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や空文字を有効な値として扱う必要がある場合は??
を使うのが適切です。