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

时间:2016-05-03 14:00:30

标签: javascript

我有两个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,因为这会停止整个功能(下面会有更多代码)。

如何做到这两个陈述不会相互干扰?

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

您可以简单地定义一个变量来确定是否应该进入第二个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)
}

答案 2 :(得分:1)

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

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