我有一个庞大的JSON对象。我需要访问
是否有一种方法可以尝试将
x=a.b.c.d.e.f.g
。但是b
(或c
,d
,e
...)可能未定义。该数据结构是从其他地方导入的。是否有一种方法可以尝试将
x
赋值为null
或undefined
,而不会抛出错误?x=a.b.c.d.e.f.g
。但是b
(或c
,d
,e
...)可能未定义。该数据结构是从其他地方导入的。x
赋值为null
或undefined
,而不会抛出错误?可选链现在已成为ECMAScript规范的一部分,可以在大多数JavaScript客户端(浏览器、Node.js等)上使用。
x = a.b?.c?.d?.e?.f?.g
x = a.b?.c?.d?.e?.f?.g ?? 'my default value'
最简单的方法是使用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
有一些提议可以解决这个(缺少语法糖)问题。希望在不久的将来我们能够做到这一点:
let x = a?.b?.c?.d?.e;
var x =( ( ( ( (a || {}).b || {} ) || {} ).c || {} ).d || {}).e;
我承认这很丑。也许对象解构更美观:
let ({
b: {
c: {
d: { e:x } = {}
} = {}
} = {}
}) = a;