我有一个大的json对象。我需要访问x = a.b.c.d.e.f.g
。但是,b
(或c
,d
,e
...)可能未定义。此数据结构正在从其他地方导入。
有没有办法尝试与x
或null
分配undefined
而不会抛出错误?
答案 0 :(得分:4)
最简单的方法是使用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
如果您正在使用转换器,您将能够使用它,但它仍然处于非常早期阶段,可能不会被接受在规范中支持
答案 1 :(得分:3)
有一些建议可以解决这个问题(语法糖缺失)问题。希望有些人可以这样做:
refinedData
然而,在此之前,如果变量未定义,我们需要回退到对象:
let x = a?.b?.c?.d?.e;
我承认这很难看。也许对象解构更美丽:
var x =( ( ( ( (a || {}).b || {} ) || {} ).c || {} ).d || {}).e;