慕粉15160033427
2016-07-15 18:08
这个x&&x.nodeType!=1是什么意思呢??前面这个x&& function get_nextSibling(n){ var x=n.nextSibling; while (x && x.nodeType!=1){ x=x.nextSibling; } return x; }
他这里是判断 var x=n.nextSibling;这句话中的x是否存在,如果存在再判断后面是否是元素节点,如果x不存在,就不会继续执行后面的代码,提升效率。
在这里它考虑了两种情况:
1、前面确实有元素节点,那么直接返回x; var x= n.nextSibling; return x;
2、前面有节点(x),并且,它不是元素节点(x.nodeType!=1);
while(x && x.nodeType!=1){
x = x.nextSibling; (既然他不是元素节点,那么我们就再以这个非元素节点为目标,再向下找)
}
&& 是逻辑与运算,它两边的表达式计算结果都为true时,最终的返回值才为true. ||为逻辑或运算,即它两边的表达式中任何一个为true时,最终返回值为true。举个例子:var test=true&&false, test的值为false; var test=true||false, test的值为true. 你问题中的表达式是在判断:x存在,并且x 的类型不为Element(Nodetype:1)
&&表示并且,左右两边要同时成立,左边的x是一个布尔表达式,当x不等于0时成立,while(x)意思是当x存在时。整个的含义时当x存在,并且x的节点类型不是元素时,将x的先一个兄弟节点赋值给x
JavaScript进阶篇
468786 学习 · 22562 问题
相似问题