Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【JavaScript ECMAScript】SyntaxError: cannot use `??` unparenthesized within `||` and `&&` expressionsエラーの使い方

SyntaxError: cannot use `??` unparenthesized within `||` and `&&` expressionsエラーの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

SyntaxError: cannot use ?? unparenthesized within || and && expressionsオブジェクトは、JavaScriptのコードにおいて、特定の文法ルールが守られていない場合に発生する構文エラーを表すオブジェクトです。

このエラーは、ヌル合体演算子 (??) を論理OR演算子 (||) や論理AND演算子 (&&) と同じ式の中で、かつ括弧 () で囲まずに使用した場合に発生します。JavaScriptの文法では、これらの異なる種類の演算子を組み合わせる際、開発者の意図を明確にし、予期せぬ挙動を防ぐために、ヌル合体演算子の部分を明示的に括弧で囲むことが義務付けられています。

例えば、valueA ?? valueB || valueCvalueX && valueY ?? valueZ といった記述は、このエラーを引き起こします。ヌル合体演算子 (??) は、左辺が null または undefined の場合に右辺の値を返すという特性を持ち、論理OR (||) や論理AND (&&) 演算子とは異なる優先順位と評価ロジックを持っています。これらの演算子が混在する式では、JavaScriptエンジンが開発者の意図を正確に解釈できるよう、括弧による優先順位の明示が必要となるのです。

この問題を解決するには、ヌル合体演算子を含む部分を () で囲むことで、演算の優先順位を明確にする必要があります。具体的には、前述の例を (valueA ?? valueB) || valueCvalueX && (valueY ?? valueZ) のように修正します。これにより、コードの意図が正しくJavaScriptエンジンに伝わり、エラーを回避できます。システムエンジニアを目指す上では、このような構文上のルールを正確に理解し、コードの安全性と可読性を確保することが重要です。

構文(syntax)

1const value1 = null;
2const value2 = 0;
3const value3 = 1;
4const result = (value1 ?? value2) || value3;

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

関連コンテンツ

関連プログラミング言語