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 ) {}
Run Code Online (Sandbox Code Playgroud)
相当于:
while (elem.previousSibling && elem.previousSibling.nodeType !== 1) {
elem = elem.previousSibling;
// other code here
}
Run Code Online (Sandbox Code Playgroud)
从逻辑上讲,它表示循环,同时有一个previousSibling并且同时previousSibling's nodeType !== 1分配elem给它previousSibling.
原始条件中的分配是一种快捷方式,可以保存单独的分配并在nodeType检查中保存额外的参考级别.
再打破while循环,它与此相同:
while (elem.previousSibling) {
elem = elem.previousSibling;
if (elem.nodeType !== 1) {
break;
}
// other code here
}
Run Code Online (Sandbox Code Playgroud)
这部分:
(elem = elem.previousSibling)
Run Code Online (Sandbox Code Playgroud)
分配elem.previousSibling到elem并然后评估ELEM是否truthy与否.
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |