我有两个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
,因为这会停止整个功能(下面会有更多代码)。
如何做到这两个陈述不会相互干扰?
答案 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)
}
}