JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptに「null合体」演算子はありますか?

はい、JavaScriptには「null合体(null coalescing)」に相当する仕組みがあります。モダンなJavaScript(ES2020以降)では、専用のnull合体演算子(??)が利用できます。さらに、以前から使われている論理OR(||)でも同様の処理を実現可能です。

論理OR(||)を使ったnull値の扱い方

変数がnullやundefinedのときにデフォルト値を代入したい場合、次のような構文が使えます。

var anyVariableName = null;
var anyVariableName = yourVariableName || yourActualValue;

この書き方では、左側の変数に有効な値が入っていない場合に、右側の実際の値が代わりに代入されます。

コード例

var fullName = null;
console.log("The full name is=" + fullName);
var actualName = fullName || "David Miller";
console.log("The full name is=" + actualName);

このプログラムを実行するには、Node.js環境で以下のコマンドを使用します。

node fileName.js

ここでは、ファイル名をdemo81.jsとして保存しています。

実行結果

上記のコードを実行すると、次の出力が得られます。

PS C:\Users\Amit\JavaScript-code> node demo81.js
The full name is=null
The full name is=David Miller

変数fullNameがnullだったため、論理ORによってデフォルト値「David Miller」が採用されているのが分かります。

null合体演算子(??)との違い

ES2020で正式導入されたnull合体演算子(??)は、左辺がnullまたはundefinedの場合のみ右辺の値を返します。一方、論理OR(||)は左辺がfalsyな値(0、空文字列""、falseなど)の場合にも右辺を返すため、意図しない挙動になることがあります。

var count = 0;
console.log(count || 10); // 10(0はfalsy扱いのため)
console.log(count ?? 10); // 0(null/undefined以外はそのまま)

デフォルト値の設定では、nullとundefinedだけを対象にしたいケースが多いため、近年はより厳密なnull合体演算子(??)の使用が推奨されています。

  1. JavaScriptスプレッド演算子の使い方を徹底解説!配列の展開と結合の基本

    JavaScriptのスプレッド演算子(...)は、配列を個々の要素へと展開できる便利な構文です。使い方は非常にシンプルで、配列名の前にドット3つ(...)を記述するだけです。 スプレッド演算子の基本構文 [...配列名] この構文により、配列の中身が個別の要素として展開されます。代表的な活用場面は以下の通りです。 複数の配列を結合して、新しい配列を作成する 既存の配列のコピー(シャローコピー)を作る 関数を呼び出す際に、配列の各要素を引数として渡す 実装例:2つの配列をスプレッド演算子で結合する 次のサンプルコードでは、数値の配列 arr1 と文字列の配列 arr2 をスプレッド演算

  2. C#のNull合体演算子(??)の使い方を徹底解説

    Null合体演算子(??)は、null許容値型や参照型と組み合わせて使用される演算子です。片方のオペランドを、暗黙的な変換が可能な別のnull許容(または非null)値型オペランドの型へ変換する目的で利用されます。動作はシンプルで、最初のオペランドの値がnullであれば2番目のオペランドの値を返し、nullでなければ最初のオペランドの値をそのまま返します。この特性により、nullチェックのif文を書かずに簡潔にデフォルト値を設定できるのが大きなメリットです。基本構文result = operand1 ?? operand2;上記のコードでは、operand1がnullならoperand2の値が