while的死循环是怎么回事?为什么会进入死循环?

let status = true;

while (status) {

}

console.log("没有执行到这里");

阅读 8.3k
7 个回答

while(true) 当然是死循环了, 没有为什么

while传了个true进去,相当于一直在循环,没有尽头

熊嘚、你这 status 都赋 true 值了

不死循环才怪嘞

你这个代码执行流程

let status = true;

while (status) {   // 每次执行到这里 为true 执行{}里面代码 直到为false的时候退出  而你的status一    直是true

}
...

除非你while循环体内有修改status变量值为false状态的语句,否则肯定死循环啊。

首先,编程语言里几乎所有的程序控制关键字,包括判断、循环之类的,其实全都是if的派生;换句话说,如果语言允许,它们都可以写成if...的形式。
其次,回到问题上来。那么while就可以转化为:

Label:
    If (xxx) {
        dosomething;
        Goto Label;
    }

这种形式。当然这不是javascript,因为它在设计的时候拿掉了goto、而只保留了label,所以你只要能看明白大概其意思就行。那么我们知道if (true)其实是没有判断作用的、一个“常通”的逻辑语句,那么这时,这段其实就变成了:

Label:
    dosomething;
    Goto Label;

没有任何的控制,程序不断在执行操作和跳转到label段落之间往复,也就是:死循环。

let status = true;

while (status) {

}

你在while内并没有改变status的值,所以它一直是true,就会一直走到这里,形成死循环

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题