If vs.while在特定JavaScript代码中
为什么测试驱动JavaScript开发的作者(Christian Johansen)在下面的代码中使用If vs.while在特定JavaScript代码中,javascript,Javascript,为什么测试驱动JavaScript开发的作者(Christian Johansen)在下面的代码中使用while语句而不是if语句 function getEventTarget(event) { var target = event.target || event.srcElement; while (target && target.nodeType != 1) { target = target.parentNode; }
while
语句而不是if
语句
function getEventTarget(event) {
var target = event.target || event.srcElement;
while (target && target.nodeType != 1) {
target = target.parentNode;
}
return target;
}
因为作者想一直沿着树走,直到找到正确的节点类型;它可能不是直接的父对象
但是,在这种情况下,这是没有意义的,因为
parentNode
将始终返回实际使用中的元素(或文档)。因为他正在向上走。
如果你看得很清楚的话,在循环中,他用其父对象再次分配目标,而父对象不是节点类型1
target = target.parentNode;
我不知道他在尝试什么,也不知道他的目的或目标是什么,但很简单
想象一下DOM
<div>
<div>
<div>
<div>
Imagine he starts from here.. he will always get the max parent with not nodetype 1 the hightes parent so the first div..
</div>
</div>
</div>
</div>
想象他从这里开始。。他将始终获得最大父级,而不是节点类型1。hightes父级,因此第一个div。。
基本上是这样。他得到了更高的父母。。。这就是为什么他在循环。。if使用if。。他只会得到第一个家长你知道
而是一个循环,对吗?它将反复执行,直到条件变为false。但是nodeType==1
是一个元素节点,所以只要你走出TextNode(在它触发事件的不太可能的情况下),你就有了一个元素。只要nodeType=1
,这意味着它会在节点类型==1
时停止,它总是会立即停止,或者在一次迭代后停止。是的,我的mystake,你是对的,但我认为他这样做是出于某种目的看看这个例子