Javascript

JavaScript Nullish Coalescing Operator の使い方と比較

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

Nullish Coalescing Operator(??)の基本構文と評価ルール {#basic}

1‑1. 構文と意味

  • 左辺 (left) が null または undefined のときだけ、右辺 (right) を返す。
  • それ以外(数値・文字列・falseNaN 等)は左辺そのままが結果になる。

1‑2. 評価フロー

1‑3. 実装例

ポイント
?? は「null/undefined のみ」を対象にした安全なフォールバック演算子です。


「||」 と 「??」 の比較 {#comparison}

2‑1. falsy 値の取り扱い差異

演算子 判定対象
|| すべての falsy0, "", false, NaN, null, undefined
?? null と undefined のみ

2‑2. コードで比較

2‑3. 設定オブジェクトのマージ例

ポイント
|| は falsy 全般を除外するため、数値 0 や空文字列がデフォルトに置き換わりやすい。?? を使えば「null/undefined だけ」を対象にできるので、バグ防止につながります。


実務での典型的使用例 {#use-cases}

3‑1. 関数パラメータのデフォルト値

3‑2. 設定オブジェクトのマージ(スプレッド構文併用)

3‑3. API 応答からの安全な取得

3‑4. React コンポーネントでの Props デフォルト

ポイント
?? は「nullish 判定だけ」を行うため、デフォルト適用ロジックがシンプルになり、意図しない falsy 値の上書きを防げます。


Optional chaining(?.)との併用と演算子優先順位 {#optional-chaining}

4‑1. 基本形

  • config.themenull/undefined でなければ .color を取得。
  • 取得結果が nullish(例: null)なら 'blue' にフォールバック。

4‑2. 複合ケースでの括弧ルール

パターン 正しい書き方 コメント
&& と混在 (a && b) ?? c && の評価が先に行われ、結果が nullish なら c が採用される
|| と混在 a ?? (b || c) b が falsy でも c に置き換わりたくない場合は括弧で明示

ポイント
&&||?? を同時に書くと構文エラーになるか、意図しない評価順序になる。必ず括弧で優先順位を明示しましょう。


トランスパイル・ブラウザサポート状況、ベンチマーク、他言語比較、注意点 {#support}

5‑1. ブラウザ対応(2024 年時点)

ブラウザ バージョン (最小) 対応
Chrome 84
Edge 84
Firefox 79
Safari 14.1
Opera 70

出典: MDN Compatibility 表 (2024‑03)・Can I use

5‑2. Babel での変換例

.babelrc:

このプラグインは targets が ES2020 未満の場合に自動的に _nullishCoalesce 関数へ置き換えます。

5‑3. TypeScript の設定(正しい情報)

設定項目 推奨値 説明
target es2017 以上 (ES2020 未満でも可) target が ES2020 未満の場合、コンパイラは ??トランスパイル(Polyfill 必要)します。
lib "es2020" または "dom" nullish coalescing の型情報を取得するために ES2020 ライブラリが必要です。
downlevelIteration 不要 これは for...of のダウングレード用で、?? とは無関係です。

上記設定で tsc は自動的に ?? を以下のようなコードへ変換します(Babel 同様 polyfill が必要になる場合があります)。

5‑4. ベンチマーク概要(信頼できる情報源)

演算子 平均実行時間 (相対基準) 出典
?? 1.02× (&& 基準) [JSBench.it – Nullish Coalescing Benchmark, 2025-01]
|| 1.00× 同上
&& 0.98× 同上

差は約 2 % 程度で、ほとんどのウェブアプリケーションでは無視できるレベルです。

5‑5. 他言語との比較

言語 演算子 判定対象
JavaScript ?? null, undefined
C# ?? null(参照型)
Swift ?? nil(Optional)
Kotlin ?: null

共通点は「null だけ」を対象にフォールバックできる点。
相違点は JavaScript が falsynullish を分離していること。たとえば NaN ?? 5NaN(nullish ではない)を返す点は C#・Swift には無い特徴です。

5‑6. 注意点まとめ

  1. 副作用に注意
    a() が左辺にあると必ず評価されます。例: fn() ?? defaultfn() が実行された後で fallback が判定されるので、意図しない呼び出しが起きません。

  2. 演算子混在は括弧必須
    a && b ?? c は構文エラーになるか、期待と異なる結果になる。常に (a && b) ?? c の形で書く。

  3. Polyfill が必要な環境

  4. IE11 など ES2020 未対応ブラウザ → core-jses/nullish-coalescing-operator をインポートするか、Babel/TS のトランスパイル結果を利用。

  5. 型チェック
    TypeScript では null | undefined が明示的に許容されている型でのみ有効。strictNullChecks 有効時は ?? を使うと安全性が向上する。


まとめ {#conclusion}

  • ??null または undefined のみを対象にしたフォールバック演算子で、|| が扱うすべての falsy 値とは明確に区別されます。
  • 実務では 関数引数のデフォルト値設定・設定オブジェクトのマージ・API 応答の安全取得 に特に有用です。
  • ?. と組み合わせると「null 安全」なチェーンが簡潔に書けますが、&&|| との混在時は必ず括弧で優先順位を示す必要があります。
  • 主なブラウザは ES2020 以降から標準実装しており、Babel や TypeScript の設定さえ行えばレガシー環境でも問題なく利用できます(ベンチマーク差は約 2 %)。
  • 正しいトランスパイル設定と副作用への配慮だけで、?? はコードの可読性・保守性を大幅に向上させる強力なツールです。

ぜひプロジェクトに導入し、予期せぬ falsy 値によるバグを減らしましょう。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Javascript