风风无
2016-08-31 08:43
x.nodeType!=1 并且x也不等于1吗?
首先你要知道 while是什么意思 这个方式其实是用来避免IE会忽略空白造成的错误 比如下一个节点 (x && x.nodeType!=1 )其实意思是 存在下一个节点,并且这个节点的类型不为1(类型唯一就是文本,而这个函数要找的是下一个元素节点!比如P标签,H标签什么的。)好了,当满足类型不为1的时候,把这个元素赋值给X,然后输出X 输出并不是打印的意思。 return 意思是 输出给函数外部使用。 你如果不return,鬼知道你这个函数要给什么给外部? 当然 你也可以不输出 直接在函数里面 write ,就靠函数本身打印。
1、x && x.nodeType!=1 这个表达式貌似有点问题, x=n.nextSibling;x的返回值是一个节点或者是空,节点或空值不可能等于1!
楼主可以把它等价于:x.nodeType!=1,翻译过来就是:x的节点的节点类型不等于1,当节点的类型为1的时候,该节点是个元素节点,比如li p div什么的。
while (x.nodeType!=1){ x=x.nextSibling; },当x的节点的节点类型不等于1的时候,也就是x不是元素节点的时候,查找x的下一个节点,再对下一个节点的nodeType进行判断,是否等于1,一直循环下去。
2、 return x,是函数的返回值,也就是这个函数的计算结果,在该函数中返回的是:下一个节点,这个返回值会被外部调用,如果不调用,那就没有多大意义
楼上的仁兄,不输出返回值的话,下面的代码就都没法执行了!
同问!
JavaScript进阶篇
468786 学习 · 22564 问题
相似问题
回答 1