私は大きなjsonオブジェクトを持っています。 x = a.b.c.d.e.f.g
にアクセスする必要があります。ただし、b
(またはc
,d
,e
...)は未定義です。このデータ構造は他の場所からインポートされています。javascriptの既存の演算子ですか?
x
にnull
またはundefined
を割り当てようとするとエラーが発生しますか?
私は大きなjsonオブジェクトを持っています。 x = a.b.c.d.e.f.g
にアクセスする必要があります。ただし、b
(またはc
,d
,e
...)は未定義です。このデータ構造は他の場所からインポートされています。javascriptの既存の演算子ですか?
x
にnull
またはundefined
を割り当てようとするとエラーが発生しますか?
最も簡単な方法は、try catch
try {
x = a.b.c.d.e.f.g
} catch(e) {
x = undefined;
}
optional chaining
あなたはここでそれを確認することができますと呼ばれるこのための提案があります使用することです:https://github.com/tc39/proposal-optional-chaining
x = a.b?.c?.d?.e?.f?.g
をあなたができるでしょうtranspilerを使用している場合をそれを使用することができますが、それはまだ非常に初期段階にあり、仕様でサポートされることは受け入れられない可能性があります
somこれを解決するための提案(構文上の砂糖不足)問題。うまくいけば、我々はこれを行うことがsomewhen:しかし
let x = a?.b?.c?.d?.e;
を、そして私たちは、変数が定義されていない場合は、オブジェクトにフォールバックする必要があるまで:
var x =(((((a || {}).b || {}) || {}).c || {}).d || {}).e;
私はこれは非常に醜いがあると認めます。たぶん、非構造をより美しくされているオブジェクト:|ステージ1での提案があり
let ({
b: {
c: {
d: { e:x } = {}
} = {}
} = {}
}) = a;
https://github.com/tc39/proposal-optional-chainingを(ただし、バベルプラグインがあります)また、重複:[ES6/2015でのNull-safeプロパティへのアクセス(条件付き割り当て)](https://stackoverflow.com/questions/32139078/null-safe-property-access-and-conditional-assignment-in-es6 -2015/41897688) – yuriy636