Optional Chaining
5284 ワード
なぜ隙間が必要なのか
let user = {}; // 주소 정보가 없는 사용자
console.log (user.address.street);
// Uncaught TypeError: Cannot read property 'street' of undefined
アドレス情報がない場合、アドレス情報にアクセスするとエラーが発生します.別の例は、ブラウザで実行されるコードを開発するときに発生する可能性のある問題です.
JavaScriptを使用してページに存在しない要素にアクセスし、要素の情報を取得しようとすると、問題が発生します.
let html = document.querySelector(".my-element").textContent;
// querySelector(...) 호출 결과가 null인 경우 에러가 발생한다.
// Uncaught TypeError: Cannot read property 'textContent' of null
optional chaining
?.
は、?.
「前」の評価対象が定義されていないかnullである場合、評価を停止し、未定義に戻ることを示す.let user = {};
alert (user?.address?.street); // undefined , 에러 발생하지 않는다.
let user = null;
alert(user?.address); // undefined
alert(user?.address.street); // undefined
?.
は、?.
「前」評価対象のみに作用し、拡張できない.上記の例で使用される
user?.
は、user
がnull
またはundefined
である場合にのみ処理される.実際の値がある場合は、
user.address
のパーセントが必要です.そうでなければ、
user?.address.street
の2番目のポイント演算子にエラーが発生します.console.log(user?.address.street);
//Uncaught TypeError: Cannot read property 'street' of undefined
let user = {
address: "uiJeongBu"
}
// address를 넣어주고 다시 콘솔에 찍어보면,
console.log(user?.address.street);
// undefined
🚨 外来スポーツは乱用してはいけない。
?.
が存在しなくても良いオブジェクトにしか使用できません.上述したユーザアドレスの例では、論理的には
user
が必要であるが、address
は必須値ではない.したがって、user.address?.street
を使用することが望ましい.ミスで
user
に値を付けなかったら、すぐに調べなければなりません.そうでなければ、早く間違いを発見することはありません.
🚨 ?. 前の変数には宣言が必要です。
変数
user
が宣言されていない場合、user?.anything
の評価でエラーが発生します.たんらくひょうか
?.
左評価対象に値がない場合は直ちに評価を停止する.この評価方法を段落評価と呼ぶ.関数呼び出しを含む?.
右側の付加動作は、?.
の評価停止時には発生しない.(うん…よくわからないけど)
ソース:https://ko.javascript.info/optional-chaining
Reference
この問題について(Optional Chaining), 我々は、より多くの情報をここで見つけました https://velog.io/@haesoohaesoo/Optional-Chainingテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol