<script type="text/javascript">
function fn(a){
var x=a;
while (x && x.nodeType!=2){
x=3;
}
return x;
}
fn(3);
</script>这段代码中为何调用函数就报错。先说说我的理解,调用函数设定参数3,并赋值变量x,执行循环while (条件,如果x&& x.nodeType!=2),这里的x=3&&x.nodeType为文本节点 节点属性是3 ,肯定是都不等价于2的,条件正确 ,为什么有报错了呢
您好,不知道您用的是什么编辑器写代码的,您的这段程序是没有错的但是会令程序陷入死循环。
while的条件是x && x.nodeType!=2,首先x=3因此为true 其次 x.nodeType!=2返回的结果也是true
所以会这段程序会变成一个死循环,据我所知有些编辑器是有死循环检查的功能的,不知道报错是不是因为这个原因。因为我原封不动直接复制代码就导致浏览器崩溃了,所以这段程序是可以执行的。
希望对你有帮助
有点明白啦,就是说,循环条件一直成立,不会执行retrun x 换种说话就是,当循环条件结束时,才会执行return
x ,返回值到函数,
不太明白楼主的问题,但应该是运算符优先级的问题:!=运算符的优先级高于&&运算符,此时x.nodeType!=2为真,再&&x=3为真,所以while的条件始终为真,会无限循环,导致报错