慕桂英546537
2019-03-05 09:10:31
let status = true;while (status) {}console.log("沒有執行到這里");
8 回答

慕尼黑5688855
TA貢獻1848條經驗 獲得超2個贊
你這個代碼執行流程
let status = true;
while (status) { // 每次執行到這里 為true 執行{}里面代碼 直到為false的時候退出 而你的status一 直是true
}
...

湖上湖
TA貢獻2003條經驗 獲得超2個贊
首先,編程語言里幾乎所有的程序控制關鍵字,包括判斷、循環之類的,其實全都是if的派生;換句話說,如果語言允許,它們都可以寫成if...的形式。
其次,回到問題上來。那么while就可以轉化為:
Label:
If (xxx) {
dosomething;
Goto Label;
}
這種形式。當然這不是javascript,因為它在設計的時候拿掉了goto、而只保留了label,所以你只要能看明白大概其意思就行。那么我們知道if (true)其實是沒有判斷作用的、一個“常通”的邏輯語句,那么這時,這段其實就變成了:
Label:
dosomething;
Goto Label;
沒有任何的控制,程序不斷在執行操作和跳轉到label段落之間往復,也就是:死循環。

犯罪嫌疑人X
TA貢獻2080條經驗 獲得超4個贊
let status = true;
while (status) {
}
你在while內并沒有改變status的值,所以它一直是true,就會一直走到這里,形成死循環
添加回答
舉報
0/150
提交
取消