将代码逻辑还原为单行表达式

时间:2017-09-26 06:52:01

标签: javascript logic

这个似乎是真实的。如何将此减少为if if语句?

    let combined = true;

    if(earlyCallback){
      combined = self.allChildBlocksCompleted;
    }

    if (self.parent && combined) {  // I want to put everything here

    }

这是对的吗?

 if(self.parent || (earlyCallback && self.allChildBlocksCompleted)){

  }

我认为这是对的,但我现在还不知道。

2 个答案:

答案 0 :(得分:2)

我更喜欢这样做:

if (self.parent && (earlyCallback ? self.allChildBlocksCompleted : true )) { }

答案 1 :(得分:1)

这相当于接受的答案:

if (self.parent && (!earlyCallback || self.allChildBlocksCompleted)) {

您可能会认为这比需要硬编码文字true和三元运算符的其他答案更简单。它还缩短了几个字符:

if (self.parent && (earlyCallback ? self.allChildBlocksCompleted : true)) {

你可以简化"它进一步通过交换一个"或"对于额外的不是和"和"使用De Morgan:

if (self.parent && !(earlyCallback && !self.allChildBlocksCompleted)) {