用js写出死循环的方法有哪些?

在 JavaScript 中,创建死循环的方法有很多种,以下是几种常见的方式以及一些细微的差别:

1. for 循环:

  • 无限递增:
for (let i = 0; i >= 0; i++) {
  // 这里的代码会一直执行
  // i 会不断增加,直到超出 JavaScript 最大安全整数,然后变成 Infinity,循环依然继续
}
  • 无限递减 (少用): 理论上可行,但实际上 JavaScript 数字会达到负无穷大,继续递减仍然是负无穷大,循环不会停止.
for (let i = 0; i <= 0; i--) {
  //  i 会不断减少,直到负无穷大
}
  • 条件永远为真:
for (;;) { // 等同于 for (;true;)
  //  循环条件为空,默认为 true
}

2. while 循环:

  • 条件永远为真:
while (true) {
  //  循环条件始终为 true
}
  • 变量不更新:
let i = 0;
while (i < 10) {
  //  i 的值从未改变,循环条件永远满足
  //  需要 i++ 才能跳出循环
}

3. do...while 循环:

  • 条件永远为真:
do {
  // 至少执行一次
} while (true);

4. 递归调用 (容易导致栈溢出):

function infiniteRecursion() {
  infiniteRecursion();
}

infiniteRecursion();

这种方式会导致栈溢出错误(Stack Overflow Error),因为每次调用函数都会将函数的执行上下文压入调用栈,无限递归会导致调用栈耗尽内存。

5. setIntervalsetTimeout (间接死循环):

虽然 setIntervalsetTimeout 本身不是死循环,但如果在回调函数中再次调用自身,并且没有清除定时器,就会形成间接的死循环,占用大量的 CPU 资源。

setInterval(function() {
  //  这个函数会每隔一段时间执行一次,形成间接的死循环
}, 100);


function loop() {
    setTimeout(loop, 0); //  即使时间间隔为 0,也会形成间接死循环
}
loop();

避免死循环的最佳实践:

  • 仔细检查循环条件: 确保循环条件最终能够变为 false
  • 使用调试工具: 使用浏览器的开发者工具或其他调试工具来识别和解决死循环。
  • 添加日志: 在循环体内添加日志语句,可以帮助跟踪循环的执行情况,更容易发现问题。
  • 设置循环次数上限: 对于可能出现死循环的情况,可以设置一个循环次数上限,超过上限后强制跳出循环。

理解这些不同的死循环方式以及如何避免它们对于编写健壮的 JavaScript 代码至关重要。

希望以上信息对您有所帮助!

posted @   王铁柱6  阅读(105)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示