?? オペレーター
JavaScript では、2 つの疑問符 (??) は Nullish Coalescing 演算子と呼ばれる新しい論理演算子で、変数が null か未定義かを判断し、そうである場合はデフォルト値を返すために使用されます。その構文は次のとおりです。
コピー
variable ?? defaultValue
このうち、variable は判定対象の変数、defaultValue はデフォルト値です。
たとえば、次のコードは Nullish Coalescing 演算子を使用して変数の値を取得し、変数が null または未定義の場合はデフォルト値を返します。
コピー
const foo = null;
const bar = 0;
console.log(foo ?? "default"); // "default"console.log(bar ?? "default"); // 0
上記の例では、foo の値が null であるため、最初の console.log はデフォルト値「default」を返しますが、bar が null または未定義ではないため、2 番目の console.log は 0 を返します。
?.演算子
JavaScript では、疑問符ピリオド (?.) 演算子は、オプションのチェーン演算子です。その機能は、ネストされたオブジェクトのプロパティまたはメソッドにアクセスすることです。オブジェクトまたはプロパティが存在しない場合、例外はスローされません。代わりに、unknown が返されます。 。その構文は次のとおりです。
コピー
object?.propertyobject?.method()
このうち、オブジェクトはアクセス対象のオブジェクト、プロパティはオブジェクトの属性、メソッドはオブジェクトのメソッドです。
たとえば、次のコードは、疑問符ピリオド演算子を使用して、ネストされたオブジェクトのプロパティとメソッドにアクセスし、オブジェクトまたはプロパティが存在しない場合は、unknown を返します。
コピー
const person={ name:"Alice",
age:25,
address:{ city:"Shanghai",
district:"Pudong"}};
console.log(person.address?.city);// "Shanghai"
console.log(person.address?.street?.name);// undefined
上記の例では、最初の console.log は、address オブジェクトが存在し、city 属性も存在するため、「Shanghai」を返しますが、2 番目の console.log は、address オブジェクトは存在するが、street 属性が存在しないため、unknown を返します。 。