0

我不是 JS 开发人员(在 iOS 上的 WKWebView 中使用 JS,它需要将一些数据注入页面,但这对这个问题没有影响,因为我对它的纯 JS 方面感兴趣),因此这是一个非常基本的问题,为此道歉。

我有这样的结构:

{ "a": 
  { "b": 
    { "c": 
      { "property": "value" }
    }
  }
}

从“a”到“property”的所有内容都是可选的,并且可能不存在。我需要获得“财产”的价值。

目前我有这个:

  function f(value) {

      var json = JSON.parse(value);
      ...
      var prop = json.a.b.c.property;
      ...

这似乎可行,但当然,如果缺少任何部分,a.b.c.property我会在日志中收到错误:

发生 JavaScript 异常:TypeError: undefined is not an object (evalating 'json.abcproperty')

相反,如果属性不存在,我想提前退出函数。那么我需要将每个级别与 进行比较undefined,还是有更好的方法呢?

    var json = JSON.parse(value);
    if json.a == undefined || json.a.b == undefined || json.a.b.c == undefined || json.a.b.c.property == undefined {
        return;
    }
    ...
    var prop = json.a.b.c.property;
    ...
4

1 回答 1

1

如果您使用的是现代网络浏览器(阅读:不是 IE),那么您可以使用 new?.运算符

var prop = json?.a?.b?.c.property;
于 2021-09-03T16:28:46.217 回答