在三元运算符期间,对象可能未定义

时间:2018-06-01 02:15:56

标签: javascript react-native

我想从我的状态

中提取我的用户ID

我的对象可能是未定义的,我想要照亮这个错误,所以我使用了一个三元运算符。但是我仍然得到相同的错误(this.store.getState()。account可能是未定义的)。为什么呢?

var myUser = this.store.getState().account.me.id ? this.store.getState().account.me.id : 0

上下文(但也只是认知噪声) - 我在componentDidMount中使用它来获取从redux状态填充的userID。我是一个可选状态,但帐户不是(这些存储在redux中)

2 个答案:

答案 0 :(得分:2)

如果您尝试访问某个未定义的属性,则会引发错误;如果.account属性未定义,则this.store.getState().account.me.id ?将抛出。 (三元组不会解决0,脚本将完全失败)

此外,当您只需要拨打一次电话时,您就会拨打getState()两次。尝试这样的事情:

const account = this.store.getState().account;
const myUser = account ? account.me.id : 0;

答案 1 :(得分:1)

上述答案将有效,但如果account.me返回undefined,则可能会再次出现相同的错误。在这些访问嵌套属性的情况下,我更喜欢try,catch,因为它可以捕获不能访问任何级别的undefined属性

var myUser;
try {
   myUser = this.store.getState().account.me.id;
} catch(err) {
   myUser = 0;
}
console.log(myUser);