プログラミング

ヌル合体演算子の使い方

JavaScriptにおける「??」演算子、通称「ヌル合体演算子(Nullish Coalescing Operator)」は、非常に便利で強力な演算子です。この演算子は、ある値がnullまたはundefinedである場合に、代わりの値を返すというものです。JavaScriptでは、nullundefinedは「空」のような意味を持つため、それらの値を処理する際に便利な方法として利用されています。

ヌル合体演算子とは?

ヌル合体演算子は、??という形で表現されます。この演算子は、左側の値がnullまたはundefinedの場合、右側の値を返すというルールに基づいています。それ以外の値、例えば0や空文字列""falseなどが左側にある場合、そのまま左側の値が返されます。

基本的な構文

javascript
let result = value1 ?? value2;
  • value1nullまたはundefinedの場合、value2が返されます。

  • それ以外の値(0false、空文字列など)はvalue1がそのまま返されます。

以下に、ヌル合体演算子の具体的な例を示します。

javascript
let username = null; let defaultName = "ゲスト"; let result = username ?? defaultName; console.log(result); // "ゲスト"

この例では、usernamenullであるため、代わりにdefaultName(”ゲスト”)が返されます。

もう一つの例を見てみましょう。

javascript
let count = 0; let fallback = 10; let result = count ?? fallback; console.log(result); // 0

ここでは、count0であっても、??演算子はnullまたはundefinedのみを対象とするため、0がそのまま返されます。

ヌル合体演算子と論理OR(||)演算子の違い

JavaScriptでは、||(論理OR)演算子も似たような目的で使用されますが、??演算子との違いがいくつかあります。||演算子は、左側の値がfalsy(偽と評価される値、例えば0false、空文字列""など)であれば右側の値を返します。一方、??nullまたはundefinedだけに反応します。

例えば、以下のコードを見てみましょう。

javascript
let value1 = 0; let value2 = "デフォルト"; let resultWithOr = value1 || value2; let resultWithNullish = value1 ?? value2; console.log(resultWithOr); // "デフォルト"(0はfalsyなので) console.log(resultWithNullish); // 0(0はnullでもundefinedでもないので)

この例では、value10であっても、||演算子はそれをfalsyと判断してvalue2を返しますが、??演算子は0をそのまま返します。

ヌル合体演算子の使い所

ヌル合体演算子は、特に設定値がnullまたはundefinedであるかをチェックして代替値を提供したい場合に非常に便利です。例えば、ユーザーの入力がnullundefinedである場合にデフォルト値を設定する際に使われます。

設定値の例

javascript
let config = { theme: null, language: undefined, fontSize: 14 }; let theme = config.theme ?? "デフォルトテーマ"; let language = config.language ?? "日本語"; let fontSize = config.fontSize ?? 16; console.log(theme); // "デフォルトテーマ" console.log(language); // "日本語" console.log(fontSize); // 14

この場合、themenullであり、languageundefinedであるため、それぞれのデフォルト値が返されます。しかし、fontSize14という有効な値なので、そのまま返されます。

注意点

  • ヌル合体演算子は、nullundefinedをチェックするために設計されていますが、他のfalsy値(0false""など)はチェックしません。

  • 演算子の優先順位が高いため、括弧を使って演算順序を明確にすることが推奨される場合があります。

結論

ヌル合体演算子??は、特にnullundefinedのチェックを行い、より堅牢で意図通りのコードを書くために非常に有用です。これにより、デフォルト値の設定やエラー処理を簡潔に行うことができ、コードの可読性も向上します。

Back to top button