有没有办法检查一个对象是否存在并且在一行中有一个子对象

Is there way to check if an object exists and has a child in a single line?

本文关键字:一行 对象 有一个 检查 一个对象 是否 存在 有没有      更新时间:2024-06-04

有没有一种方法可以检查req.user.premium是否为真,而不必检查req.user是否存在,或者有没有方法可以将其简化为一行?

我试过只检查req.user.premium,但如果req.user为空,则会抛出错误,因为req.userundefinedreq.user && req.user.premium也是如此。

if(req.user){
    if(req.user.premium){
        console.log('Is premium');
    }
}

一行(假设您仍然console.log为空val):

console.log((req.user && req.user.premium) ? 'Is premium' : '');

OR 2行(1条语句行):

if(req.user && req.user.premium)
    console.log("is premium");

编辑:

假设req对象未定义。。。这样做:

一行,(假设您仍然console.log为空val):

console.log((req && req.user && req.user.premium) ? 'Is premium' : '');

OR 2行(1条语句行):

if(req && req.user && req.user.premium)
    console.log("is premium");

如果第一个条件(req)未定义,则不会评估第二个和第三个条件-AKA:短路)

if(req.user && req.user.premium){
     console.log('Is premium');
}

这和一样简单

你也可以做:

var premium = false;
try{
  premium = req.user.premium;
}
catch(err){
}