在一个Node.JS项目中,假设我从一个API或者其他结构化对象中得到了一个响应,其结构可能如下所示:
访问对象的成员非常容易。但是,在访问任何值之前检查其是否存在却很麻烦。
我可以假设数据始终存在。信息、用户、名称、密码和电子邮件可能存在,也可能不存在。可能存在一个有效的信息对象而没有用户,也可能存在一个有效的用户没有电子邮件地址。
这导致了以下代码:
只需检查。
{
data: {
info: {
user: {
name: "Hercules",
password: "Iamthegreatest!"
email: "hercules@olymp.gr"
}
}
}
}
访问对象的成员非常容易。但是,在访问任何值之前检查其是否存在却很麻烦。
我可以假设数据始终存在。信息、用户、名称、密码和电子邮件可能存在,也可能不存在。可能存在一个有效的信息对象而没有用户,也可能存在一个有效的用户没有电子邮件地址。
这导致了以下代码:
if (data && data.info && data.info.user && data.info.user.email) {
var email = data.info.user.email;
}
只需检查。
if (data.info.user.email)
// do something
}
如果任何对象不存在,将抛出错误。
有没有更简短的方法来深度检查此类结构的存在?
var email = data?.info?.user?.email;
或许 JS 也会跟进。我记得 Groovy 是第一个实现它的语言。 - Richard Schneider