JS函數(shù),while問題
<script type="text/javascript">
?function fn(a){
??????? var x=a;
???????? while (x && x.nodeType!=2){
??????????? x=3;
????????? }
??????? return x;
??????????????? }
??????????????? fn(3);
</script>這段代碼中為何調用函數(shù)就報錯。先說說我的理解,調用函數(shù)設定參數(shù)3,并賦值變量x,執(zhí)行循環(huán)while (條件,如果x&& x.nodeType!=2),這里的x=3&&x.nodeType為文本節(jié)點 節(jié)點屬性是3 ,肯定是都不等價于2的,條件正確 ,為什么有報錯了呢
2016-08-24
您好,不知道您用的是什么編輯器寫代碼的,您的這段程序是沒有錯的但是會令程序陷入死循環(huán)。
while的條件是x && x.nodeType!=2,首先x=3因此為true 其次?x.nodeType!=2返回的結果也是true?
所以會這段程序會變成一個死循環(huán),據(jù)我所知有些編輯器是有死循環(huán)檢查的功能的,不知道報錯是不是因為這個原因。因為我原封不動直接復制代碼就導致瀏覽器崩潰了,所以這段程序是可以執(zhí)行的。
希望對你有幫助
2016-08-25
有點明白啦,就是說,循環(huán)條件一直成立,不會執(zhí)行retrun x 換種說話就是,當循環(huán)條件結束時,才會執(zhí)行return
x ,返回值到函數(shù),
2016-08-24