jQuery 1.7rc1的第4140行:
while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
这对我来说很奇怪。它等同于
while( elem && elem.nodeType !== 1 ) elem = elem.previousSibling;
?
答案 0 :(得分:5)
不,它不等于你所拥有的。原始代码:
while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
相当于:
while (elem.previousSibling && elem.previousSibling.nodeType !== 1) {
elem = elem.previousSibling;
// other code here
}
逻辑上,它表示在previousSibling
和previousSibling'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是否真实。