第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

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的,條件正確 ,為什么有報錯了呢

正在回答

3 回答

您好,不知道您用的是什么編輯器寫代碼的,您的這段程序是沒有錯的但是會令程序陷入死循環(huán)。

while的條件是x && x.nodeType!=2,首先x=3因此為true 其次?x.nodeType!=2返回的結果也是true?

所以會這段程序會變成一個死循環(huán),據(jù)我所知有些編輯器是有死循環(huán)檢查的功能的,不知道報錯是不是因為這個原因。因為我原封不動直接復制代碼就導致瀏覽器崩潰了,所以這段程序是可以執(zhí)行的。


希望對你有幫助

0 回復 有任何疑惑可以回復我~
#1

慕粉3361053 提問者

十分感謝您的回答, 我也覺得這段代碼 沒有錯,但是確實會導致瀏覽器崩潰, 其實我是好奇有兩點,1、是什么原因讓他陷入死循環(huán)。2、while的條件是x && x.nodeType!=2,首先x=3因此為true 其次 x.nodeType!=2返回的結果也是true ,為什么x=3 和x.nodeType!=2 這個條件是true 為什么呀,他不是條件嗎,怎么會變成true
2016-08-24 回復 有任何疑惑可以回復我~
#2

youli023023 回復 慕粉3361053 提問者

當一個變量的值不為0或者false的話就是true,你給x的賦值是3,所以運算結果就是true。然后x.nodeType這個,你試下運行document.write(x.nodeType) 發(fā)現(xiàn)輸出的結果是undefined,所以就變成了判斷'undefined'!=2 這個很明顯就是不等于2的,因此也是返回true
2016-08-24 回復 有任何疑惑可以回復我~
#3

慕粉3361053 提問者

非常感謝!
2016-08-24 回復 有任何疑惑可以回復我~
#4

慕粉3361053 提問者 回復 youli023023

有點疑問,當一個變量的值不為0或者false的話就是true這段代碼是哪章內容里的, 是while()判斷條件中如果變量的值不為0或者false的話就是true,值不為0時是true 這個是固定的嗎。還有是false時,如果我調用fn(3)傳參,條件設立為,x!=3就是false把。
2016-08-24 回復 有任何疑惑可以回復我~
#5

youli023023 回復 慕粉3361053 提問者

當值不為0或false即視為true大多編程語言都是這樣設定的,本課程中好像沒有介紹過這個知識點。如果fn(3) 然后判斷x!=3此時返回的結果的確是false
2016-08-24 回復 有任何疑惑可以回復我~
查看2條回復

有點明白啦,就是說,循環(huán)條件一直成立,不會執(zhí)行retrun x 換種說話就是,當循環(huán)條件結束時,才會執(zhí)行return

x ,返回值到函數(shù),


0 回復 有任何疑惑可以回復我~
不太明白樓主的問題,但應該是運算符優(yōu)先級的問題:!=運算符的優(yōu)先級高于&&運算符,此時x.nodeType!=2為真,再&&x=3為真,所以while的條件始終為真,會無限循環(huán),導致報錯
0 回復 有任何疑惑可以回復我~
#1

慕粉3361053 提問者

那我可以理解成這樣嗎,代碼寫的沒有問題,問題出在while條件都成立,會無限循環(huán)輸出 3333333333 導致報錯, 不知道我這樣理解對不對。
2016-08-24 回復 有任何疑惑可以回復我~
#2

Johnson1602 回復 慕粉3361053 提問者

while循環(huán)的機制是先判斷條件是否成立,成立的話執(zhí)行循環(huán)體,執(zhí)行完之后再回去判斷條件是否成立,所以在你寫的代碼里,會一直執(zhí)行while循環(huán),但是不會輸出x的值(只有在while循環(huán)執(zhí)行完后才會return x,你這樣寫是不會執(zhí)行return x的)
2016-08-24 回復 有任何疑惑可以回復我~
#3

慕粉3361053 提問者 回復 Johnson1602

有點明白啦,就是說,循環(huán)條件一直成立,不會執(zhí)行retrun x 換種說話就是,當循環(huán)條件結束時,才會執(zhí)行return x ,返回值到函數(shù),
2016-08-25 回復 有任何疑惑可以回復我~
#4

Johnson1602 回復 慕粉3361053 提問者

對的,只有當循環(huán)體運行完之后才會執(zhí)行下一條語句
2016-08-25 回復 有任何疑惑可以回復我~
查看1條回復

舉報

0/150
提交
取消
JavaScript進階篇
  • 參與學習       468770    人
  • 解答問題       22442    個

本課程從如何插入JS代碼開始,帶您進入網(wǎng)頁動態(tài)交互世界

進入課程

JS函數(shù),while問題

我要回答 關注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號