jQuery代码中的空块

时间:2011-10-27 22:08:19

标签: jquery

jQuery 1.7rc1的第4140行:

while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}

这对我来说很奇怪。它等同于

while( elem && elem.nodeType !== 1 ) elem = elem.previousSibling;

1 个答案:

答案 0 :(得分:5)

不,它不等于你所拥有的。原始代码:

while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}

相当于:

while (elem.previousSibling && elem.previousSibling.nodeType !== 1) {
    elem = elem.previousSibling;
    // other code here
}

逻辑上,它表示在previousSiblingpreviousSibling's nodeType !== 1时循环,并将elem分配给previousSibling

原始条件中的分配是一种快捷方式,可以保存单独的分配并在nodeType检查中保存额外的参考级别。

更多地打破while循环,它与此相同:

while (elem.previousSibling) {
    elem = elem.previousSibling;
    if (elem.nodeType !== 1) {
        break;
    }
    // other code here
}

这部分:

(elem = elem.previousSibling)

elem.previousSibling分配给elem,然后评估elem是否真实。