任意連鎖演算子


任意連鎖演算子?. ES 2020で導入された新しいJavaScript言語機能です.これは、チェーン内の各参照が有効であることを明示的に検証する必要がなく、ネストされたオブジェクトのプロパティにアクセスする方法を提供します.
The ?. 演算子関数は. 参照するとエラーが発生する代わりにnull or undefined , 式はundefined . 関数呼び出しで使用する場合、undefined を返します.
例えば、
const obj = {
  prop1: {
    prop2: {
      prop3: "value"
    }
  }
};
存在しなかった上記のオブジェクトのプロパティにアクセスしようとすると、obj.prop2.prop3 以下のエラーが発生します:Uncaught TypeError: Cannot read property 'prop3' of undefined典型的には、論理演算子と三項式を組み合わせて、潜在的に見つからないプロパティの場合を処理することができます.
const myProp3 = obj.prop2 && obj.prop2.prop3 ? obj.prop2.prop3 : undefined;
この冗長な構文は、オプションの連鎖演算子を使用する代わりに、myProp3 to undefined :
const myProp3 = obj.prop2?.prop3; //undefined
さらに深くネストされたオブジェクトを扱う場合、オプションの連鎖演算子を同じステートメントで複数回使用することで、プロパティへのアクセスを安全に対応できます.let temp = obj.first?.second?.third?.value;また、関数コールを使用して関数が存在することを確認することもできます.undefined :let data = obj.someMethod?.(someArgument); //undefined配列で使用することもできます.
const arr = [5,6,7,8];

arr?.[10] // undefined
マップデータ構造体:
let myMap = new Map();
myMap.set("foo", {name: "baz", desc: "inga"});

let nameBar = myMap.get("bar")?.name;
そして最後に、nullish合体演算子?? :
const myCar = {
  make: "Ford",
  details: { year: 1982 }
};
const customerCar = myCar?.make ?? "Unknown Car";
console.log(customerCity); // Unknown Car