JavaScript optional chaining
5920 ワード
本文はA surprising feature of JavaScript optional chainingの翻訳です.誤訳があるかもしれません.
2020年までにJavaScriptには、オプションリンクと呼ばれる新しい機能が登場します.この機能は、さまざまなソリューションと標準化された方法で、お客様が直面している問題を解決します.
次のオブジェクトがあります.
JavaScriptの&構文(評価の意味)を使用して、式は最後の値を返します.
使用条件文は非常に明確です.
もう1つの一般的な方法は、
Optional chainingを使用すると、デフォルトでは上記の操作を実行できます.
関数呼び出し:
2020年までにJavaScriptには、オプションリンクと呼ばれる新しい機能が登場します.この機能は、さまざまなソリューションと標準化された方法で、お客様が直面している問題を解決します.
💻 ネックレスを選ぶことで解決する問題
次のオブジェクトがあります.
const object = {
greet: "hai",
deepProp: {
greet: "hello",
deeperProp: {
greet: "ohai",
}
}
}
APIまたはデータベースから読み込まれたJSONであってもよいし、フロントエンドで作成されたオブジェクトであってもよい.object
、deepProp
、deeperProp
が定義されていない(定義されていない)場合、第3greet
にアクセスするにはどうすればいいですか?JavaScriptの&構文(評価の意味)を使用して、式は最後の値を返します.
const greeting =
object &&
object.deepProp &&
objet.deepProp.deeperProp &&
object.deepProp.deeperProp.greet
この方法は書きにくく、間違いを犯す可能性が高く、最初の人に混乱をもたらす可能性があります.使用条件文は非常に明確です.
let greeting = undefined
if (object) {
if (object.deepProp) {
if (object.deepProp.deeperProp) {
greeting = object.deepProp.deeperProp.greet
}
}
}
より明確になったが,冗長で,実際のコードで上記の記述を行う人はいない.条件文を使用して割り当てるのは気まずいかもしれません.もう1つの一般的な方法は、
Lodash
と同じライブラリを使用することです.const greeting = _.get(object. "deepProp.deeperProp.greet")
必要性が感じられないので、個人的には好きではありません.💻 セレクトネックレスを使用
Optional chainingを使用すると、デフォルトでは上記の操作を実行できます.
const greeting = object?.deepProp?.deeperProp?.greet
何でも接続(リンク)できるので、これは重要です.関数呼び出し:
object?.deepProp?.function?.(args)
配列アクセス:object?.deepProp?.deepArray?.[5]
式:object?.deepProp?.[console.log("runs if deepProp defined")]
Reference
この問題について(JavaScript optional chaining), 我々は、より多くの情報をここで見つけました https://velog.io/@ag502/JavaScript-optional-chainingテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol