-3

私は「?」に出くわしました。別の SO 質問の構文。このようなもの -

console.log(x?.y?.z);

それは何をするためのものか?

4

1 に答える 1

0

これはOptional Chainingと呼ばれます。

各レベルでプロパティを検証する必要なく、プロパティ チェーンを使用できます。例外を発生させずにプロパティ評価を回避するため、「未定義の X を読み取れません」というエラーを回避できます。

let o = {p: {q: 'foo'}};


try {
  console.log('Trying to access the property x');
  console.log(o.x.y);
}
catch(e) {
  console.log('That was an error');
}


console.log('Trying to access the property x with Optional Chaining');

console.log(o?.x?.y);


オプションのチェーニング より多くのユースケース

関数呼び出しあり

let result = someInterface.customMethod?.();

式付き

let nestedProp = obj?.['prop' + 'Name'];

配列要素あり

let arrayItem = arr?.[42];

ECMAScript ドラフト

于 2020-08-07T18:15:36.580 に答える