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

时间:2016-04-13 05:30:31

标签: javascript node.js

有没有办法检查req.user.premium是否属实,而无需检查req.user是否存在,或者是否有办法将其简化为一行?

我已经尝试过检查req.user.premium,但如果req.user为空则会因为req.userundefined而引发错误,{{1}也是如此}}

req.user && req.user.premium

2 个答案:

答案 0 :(得分:2)

一行,(假设你还是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:Short-Circutiing

答案 1 :(得分:1)

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

这就像它得到的一样简单

你也可以这样做:

var premium = false;

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

}