如何在不使用return的情况下跳过下一个if语句

How to skip the next if statement without using return?

本文关键字:情况下 下一个 语句 if return      更新时间:2023-09-26

我有两个if语句。一个将this.node设置为父节点的下一个同级节点,另一个则将this.node(递归)设置为下一个节点的最后一个子节点。

if (!this.node.nextSibling) {
  this.node = findParentNode(this.node).nextSibling
}
if (this.node.nextSibling) {
  this.node = findNode(this.node.nextSibling)
}

不时地,两个if语句会相互影响,换句话说,一个会运行,然后另一个也会运行。我不能使用return,因为这将停止整个函数(下面还有更多代码)。

如何做到这两种说法不会相互干扰?

为什么不使用else语句来组合两者呢?

if (!this.node.nextSibling) {
  this.node = findParentNode(this.node).nextSibling
} else {
  this.node = findNode(this.node.nextSibling)
}

您可以简单地定义一个变量来确定是否应该进入第二个if块,如下所示:

var wasProcessed = false;
if (!this.node.nextSibling) {
  this.node = findParentNode(this.node).nextSibling
  wasProcessed = true;
}
if (!wasProcessed && this.node.nextSibling) {
  this.node = findNode(this.node.nextSibling)
}

您也可以将IF条件放在当前(第一个IF)的ELSE部分。

if (!this.node.nextSibling) {
      this.node = findParentNode(this.node).nextSibling
    }
    else
    {
      if (this.node.nextSibling) {
        this.node = findNode(this.node.nextSibling)
        }
    }
相关文章: