jQuery代码中的空块

jQuery代码中的空块,jquery,Jquery,jQuery 1.7rc1的第4140行: while((elem=elem.previousSibling)和&elem.nodeType!==1){} 我觉得这很奇怪。相当于 while(elem&&elem.nodeType!==1)elem=elem.previousSibling?不,它不等同于您所拥有的。原代码: while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} 相当于: while

jQuery 1.7rc1的第4140行:

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

我觉得这很奇怪。相当于


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

不,它不等同于您所拥有的。原代码:

while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
相当于:

while (elem.previousSibling && elem.previousSibling.nodeType !== 1) {
    elem = elem.previousSibling;
    // other code here
}
从逻辑上讲,它表示在存在
previousSibling
previousSibling的
节点类型时循环!==1
并将
元素
分配给该
以前的兄弟姐妹

原始while条件中的赋值是一个快捷方式,用于保存单独的赋值,并在
节点类型中保存额外的参考级别

进一步分解while循环,如下所示:

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

(elem = elem.previousSibling)

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

哇,我不知道他们在jQuery中做过这样的黑客。。。