我有两个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)
}
}