JavaScriptの任意の連鎖


JavaScriptの任意の連鎖を返すために使用されますundefined 存在しないオブジェクトプロパティにアクセスし、親プロパティがnull(nullまたは未定義)の場合.
プロパティが存在しないかどうかを認識していない場合は、スローされているエラーを回避したい場合は、オプションの連鎖を使用して取得する必要があります.
この記事では、どのようにいつ、オプションの連鎖を使用する方法を学びます.また、JavaScriptでオプションの連鎖を使用しないときに学習します.

動作方法


最初に、入れ子になったオブジェクトのプロパティにアクセスするときに何がうまくいかないかを調べましょう.
let person = {
    name: "Murtuza",
    work: () => {
        return "Software Developer"
    },
    socials: {
        github: {
            username: "murtuzaalisurti",
            link: "https://github.com/murtuzaalisurti",
            proUser: {
                is: 'no'
            }
        },
        linkedin: {
            username: "murtuzaali-surti",
            link: "https://linkedin.com/in/murtuzaali-surti"
        },
        twitter: {
            username: "murtuza_surti",
            link: "https://twitter.com/murtuza_surti"
        }
    }
}
上記のオブジェクトで、プロパティにアクセスしようとしましょうlink プロパティ内に入れ子になったwebsite . できますか.
console.log(person.website.link); //an error will be thrown
エラーが発生しました.
Cannot read property 'link' of undefined
プロパティのウェブサイトは、オブジェクトに存在しません!
しかし、プロパティを追加しましょうwebsite を返します.null .
website: null
これがうまくいくかどうか調べましょう.
console.log(person.website.link); //an error will be thrown
我々は同様のエラーを得る.
Cannot read property 'link' of null
前述の通りdefinition , これらのタイプのエラーを扱うためにオプションの連鎖を使用することができます!ここでどのように我々はそれを行うことができますです.

構文


// website: property to validate
// link: property to access
website?.link
演算子?. 左側のプロパティがnull or undefined そしてもしそうならば、それは単にundefined エラーを出さずに.つまり、短絡としても知られている.それ以外の場合は、右側のプロパティの値が返されます.

だけでなく、オプションの連鎖を使用して存在する場合は、関数を呼び出すこともできます.
person.work?.(args)
また、プロパティを使用してアクセスできます[] ブラケット.
person.socials.github?.["username"]

何ができない

  • オプションの連鎖は、まだ宣言されていないオブジェクトに適用できません.例えば、
  • object?.prop // object is not defined
    
    我々は宣言していないobject , したがって、エラーが発生します.
  • この式に値を割り当てることはできません.言い換えれば、オプションの連鎖表現は左側にはできません.
  • 以下のコードは有効ではありません.
    person.socials.github?.["username"] = "name" // not valid
    

    オプションの連鎖を使用する場合は?


    オプションの連鎖は、そうする必要がないときには使用しないでください.アクセスするプロパティが任意で必須ではないことを知っている場合のみ、オプションの連鎖を使用します.
    例えば、我々のオブジェクトでperson , 我々はソーシャルメディアプラットフォームを任意に保つことができるので、ユーザーが特定のプラットフォームではないソーシャルメディアアカウントを持っているかどうかわからない.そのためには、ユーザーが特定のプラットフォームでソーシャルメディアアカウントを持っているかどうかをチェックするためにオプションの連鎖を使用することができます.
    person.socials.github?.["username"]
    
    しかし、ルートオブジェクトでオプションの連鎖演算子を置くと、rootオブジェクトのため、何の意味もありません.person 存在しなければならない、そして、それが存在しないならば、我々は誤りを得るべきです!

    結論


    この記事では、JavaScriptのオプションの連鎖がどのように使用されているのか、どのように使用するか、そして使用しないときにどのように動作するかを学びました.
    どのようにオプションの連鎖の作品の詳細については、チェックアウトしてくださいMDN documentation 詳細については.

    This post was originally published in Syntackle in collaboration with blog.shahednasser.com