JavaScriptの任意の連鎖
4843 ワード
JavaScriptのオプションの連鎖は何ですか?
オプションの連鎖は、ネストされたオブジェクトのプロパティのインラインチェックを可能にする2020年に導入されたJavaScript言語の新機能です.それは非常に簡潔かつ簡単にもエレガントにプログラムが失敗することができますメソッドを書くことです.それは存在しないオブジェクトのプロパティにアクセスしようとすると、恐ろしく
オプションの連鎖も安全なナビゲーションとして知られています.
オブジェクト(
任意の連鎖で、これは非常に効率的に行うことができます.
この時点で、オプションとして
インデックス
値
ドッグネーム
ボブ
catname
マージ
アヒル
未定義
ドグウェイト
未定義
オブジェクトの検索プロパティを超えて、任意の連鎖を使用して、オブジェクトの式、配列インデックス、および関数の引数の信頼性をチェックすることもできます.
オプションの連鎖(別名セーフナビゲーション)は、異なる言語で少し異なった構文を持つかもしれません.ルビーでは、
参考文献
MDN
FreeCodeCamp
オプションの連鎖は、ネストされたオブジェクトのプロパティのインラインチェックを可能にする2020年に導入されたJavaScript言語の新機能です.それは非常に簡潔かつ簡単にもエレガントにプログラムが失敗することができますメソッドを書くことです.それは存在しないオブジェクトのプロパティにアクセスしようとすると、恐ろしく
cannot read property of undefined
エラーメッセージを回避します.オプションの連鎖も安全なナビゲーションとして知られています.
オブジェクト(
animals
)を与えられて、どのように、あなたはname
でdog
の入れ子にされた値に割り当てて、アクセスするでしょうか?const animals = {
cat: {
name: "marge",
age: 2,
},
dog: {
name: "bob",
age: 6,
},
}
オプションの連鎖なしでは、dog
が三次式でanimals
のプロパティであるかどうかを確認します.const name = animals.dog ? animals.dog.name : undefined
この3進法の使用は有効ですが、オブジェクトにドリルをかけるときにプロパティをチェックする方法が少し長すぎます.任意の連鎖で、これは非常に効率的に行うことができます.
const name = animals.dog?.name
?
がdog
のプロパティとして存在するかどうかを調べるために、animals
を使用しています.それがそうでないならば、undefined
とオブジェクト連鎖短絡を返します.name
の特性としてdog
が存在するならば、プログラムは進行して、animals
のdog
のプロパティを得ることを試みます.この時点で、オプションとして
name
がプロパティとして存在する場合、オプションの連鎖は気にかけません.実際には、オブジェクトの穴の終端のオプションのチェーンへの方法はありません.この構文は正しくない:name
しかし、この構文はすばらしいです:const name = animals.dog?.name?.
以下の例では、const name = animals?.dog
でドット表記の連鎖にこだわることがどれほど優雅であるかを見ることができます.一方、エラーを投げる代わりに、?
を返すことによってプログラムが優雅に失敗することを保証します.const dogName = animals.dog.name
const catName = animals.cat?.name
const duckName = animals.duck?.name
const dogWeight = animals.dog?.weight
console.table({
dogName: dogName,
catName: catName,
duckName: duckName,
dogWeight: dogWeight,
})
これはログに記録されます.インデックス
値
ドッグネーム
ボブ
catname
マージ
アヒル
未定義
ドグウェイト
未定義
オブジェクトの検索プロパティを超えて、任意の連鎖を使用して、オブジェクトの式、配列インデックス、および関数の引数の信頼性をチェックすることもできます.
obj.val?.prop
obj.val?.[expr]
obj.arr?.[index]
obj.func?.(args)
注意すべき風変わりなことは、ドットの表記法が使用されていない状況、例えばインデックスを有する配列にアクセスする際に、オプションの連鎖が両方のシンボルundefined
および?
を必要とすることである.オプションの連鎖(別名セーフナビゲーション)は、異なる言語で少し異なった構文を持つかもしれません.ルビーでは、
.
の代わりに、言語はinteresting reasonsの?.
を使います.しかしながら、多くの言語では、&.
と同様のものが使用されている.参考文献
MDN
FreeCodeCamp
Reference
この問題について(JavaScriptの任意の連鎖), 我々は、より多くの情報をここで見つけました https://dev.to/tywenk/optional-chaining-in-javascript-2oa2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol