如何用JS深度检查“null”或“undefined”?

dan*_*kbx 5 javascript null undefined node.js

在 Node.JS 项目中,假设我有来自 API 或具有如下结构的任何其他对象的响应

{
  data: {
    info: {
      user: {
        name: "Hercules",
        password: "Iamthegreatest!"
        email: "hercules@olymp.gr"
      }
    }       
  }
}
Run Code Online (Sandbox Code Playgroud)

访问对象的成员非常容易。但是,在访问任何值之前检查是否存在会导致 PITA。

我可以假设数据始终存在。信息、用户、姓名、密码和电子邮件可能存在,也可能不存在。可以存在没有用户的有效信息对象,也可以存在没有电子邮件地址的有效用户。

这导致代码如下

if (data && data.info && data.info.user && data.info.user.email) {
  var email = data.info.user.email;
}
Run Code Online (Sandbox Code Playgroud)

仅检查

if (data.info.user.email)
  // do something
}
Run Code Online (Sandbox Code Playgroud)

如果任何对象不存在,则会引发错误。

有没有更短的方法来深入检查这样的结构是否存在?

Pau*_*aul 3

从项目目录中的控制台,npm install dotty

然后在代码顶部,使用以下命令导入 dotty: var dotty = require('dotty')

那么如果obj是上面发布的对象,您可以调用

dotty.exists(obj, "data.info.user.email")

它会产生truefalse而不是抛出错误。

请参阅https://www.npmjs.org/package/dotty