javascript 是否有必要在代码末尾使用两次null?

5kgi1eie  于 2023-06-20  发布在  Java
关注(0)|答案(2)|浏览(75)

我有一个问题请帮帮我
我在我的教学程序中有代码:

alert(user.address ? user.address.street ? user.address.street.name : null : null);

但我不明白,为什么他在代码的末尾用了两次“null”?
我理解如果user.adress-存在,则检查user.address.street是否存在,如果user.address.street-存在,则检查user.address.street.name exist是否存在,如果不存在,则检查null
但他为什么要写第二个null呢?

0s0u357o

0s0u357o1#

运算符是if-else赋值的简写。

alert(user.address ? user.address.street ? user.address.street.name : null : null);

是以下内容的缩写形式:

let res;
if (user.address) {
    if (user.address.street) {
          res = user.address.street.name;
    } else {
          res = null;
    }
} else {
    res = null;
}
alert(res);

在javascript中,还有一个“可选的链接操作符”,这可能是你想要的:

alert(user?.address?.name);

如果对象的属性不为空,则只访问它们,否则返回空。

m1m5dgzv

m1m5dgzv2#

这里是用户地址?是具有两个操作数条件语句。第一个是完整的

user.address.street ? user.address.street.name : null

如果条件为真,我们将深入到这个语句,它是一个条件语句,并且再次有两个操作数:第一个是user.address.street.name(如果嵌套条件是true),第二个是null(如果嵌套条件是false)。最后一个null是user.address ?的第二个操作数,如果它是false

相关问题