JavaScript・TypeScriptで見る ?.演算子 と ??演算子、||演算子の意味と使い方まとめ

Type演算子

こんにちはフロントエンドエンジニアのまさにょんです!

今回は、JavaScript・TypeScriptで見る ?.演算子 と ??演算子、||演算子の意味と使い方についてまとめて解説していきます。

?.演算子 と ??演算子、||演算子の意味と使い方まとめ

JavaScriptでは、null や undefined のkeyを参照するとエラーが発生します。

?.演算子は、?. に「先行する変数」や「後に続くkey」が、null or undefined の時は、

そのkeyに対するAccessは実施されず(Error-回避されて) undefined が実行結果(Access結果)として返されます。

つまり、?.を使ってKeyにAccessすると「Access元のObjectと、そのObjectのkey が、null or undefined でもErrorが発生しない!」と言うことです。

??演算子は、左側のオペランドが、 null または undefined である場合に、右側のオペランドを返します。

つまり、左側の処理の結果が null or undefined なら、右側の処理結果を返すと言うことです。

||演算子は、左側のオペランドがfalsyな場合に、右側のオペランドを返します。

つまり、左側の処理の結果がfalse値なら、右側の処理結果を返すと言うことです。

上記の内容をJavaScriptのSampleCodeで確認していきます。

const robotama = {
  name: 'ロボ玉',
  from: 'グンマー帝国',
  hamFlag: true,
  power: 0,
  tama: null,
}

// 1. 存在しないkeyにアクセスする場合
console.log(robotama?.like); // undefined
console.log(robotama?.like ?? '??_Test_1'); // ??_Test_1
console.log(robotama?.like || '||_Test_1'); // ||_Test_1

// 2. 存在するが、nullなDataにアクセスする場合
console.log(robotama?.tama); // null
console.log(robotama?.tama ?? '??_Test_3'); // ??_Test_3
console.log(robotama?.tama || '||_Test_3'); // ||_Test_3

// 3. 存在するが、falsyな値にアクセスする場合
console.log(robotama?.power); // 0
console.log(robotama?.power ?? '??_Test_2'); // 0
console.log(robotama?.power || '||_Test_2'); // ||_Test_2

まとめ

?.演算子 と ??演算子、||演算子の意味と使い方をまとめると次のとおりです。

  1. ?.演算子は、「先行する変数」(object)や「Access先のkey」(key) が null or undefined なら、undefined がAccess結果(参照結果)として返却される。
  2. ??演算子は、左側のオペランドが、 null または undefined である場合に、右側のオペランドを返します。
    • null or undefined の場合に対応したいのなら、??演算子
  3. ||演算子は、左側のオペランドがfalsyな場合に、右側のオペランドを返します。
    • false値の場合に対応したいのなら、、||演算子
    • JavaScriptで、false判定な値 : false, 0, “”, null, undefined

関連記事

JavaScript書籍 Ver. 中級-上級者向け

JavaScript書籍 Ver. 初級者向け

Twitterやってます!Follow Me!

神聖グンマー帝国の逆襲🔥

神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!

最近の投稿