Javascript 有没有更好的方法来重构这段代码?

Javascript 有没有更好的方法来重构这段代码?,javascript,Javascript,下面是我的代码 if(props.plan[plan_id]) { if(props.plan[plan_id].number== 0) { return null; } else { return 'some value'; } } 首先,我需要检查prop.plan[plan_id]是否存在,然后使用它的数据。 因为我写了两次if语句,所以任何方法都可以使代码更漂亮。使用三元运算符: if (props.plan[plan

下面是我的代码

  if(props.plan[plan_id]) {
    if(props.plan[plan_id].number== 0) {
       return null;
    }
    else {
       return 'some value';
    }
  }
首先,我需要检查prop.plan[plan_id]是否存在,然后使用它的数据。
因为我写了两次if语句,所以任何方法都可以使代码更漂亮。

使用三元运算符:

if (props.plan[plan_id])
   return (props.plan[plan.id].number == 0) ? null : 'some value';

顺便说一句,我认为在这种情况下,
===
可能比使用
===
更好:

  if(props.plan[plan_id]) {
    return props.plan[plan_id].number === 0 ? null : 'some value';
  }
使用可以将您从两个
if
中解救出来,因为它将在第一个语句处终止,它可以转换为
false
(不会尝试检查
props.plan[plan\u id]
的值,除非它存在并且左侧计算为
true
):


为了确保没有运行时错误,我将执行以下操作:

return props && props.plan && props.plan[plan_id] ? 'some value' : null

如果
props.plan[plan\u id]
不存在,或者它的值是:
0
未定义的
空的
或者一个空字符串,那么你将得到
一些值。

嘿,不确定我是否会称之为“更漂亮”但肯定更多terse@IsmailBadawi是的,我刚刚注意到并编辑了我的答案:p@Kaiido
0
是错误的,
value==0
不是。我的。。。。对不起,你忘了OP btw中的
.value
,它是
.number
。事实上,它永远不会传递给
'some value'
@kaido对不起,我明白你的意思了。我错误地阅读了示例代码。
return props && props.plan && props.plan[plan_id] ? 'some value' : null