首页 > 其他分享 >用js写出死循环的方法有哪些?

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

时间:2024-11-24 17:58:25浏览次数:2  
标签:JavaScript js while 写出 条件 true 死循环 循环

在 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 代码至关重要。

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

标签:JavaScript,js,while,写出,条件,true,死循环,循环
From: https://www.cnblogs.com/ai888/p/18566069

相关文章

  • 分别写出数组的交集、并集、差集、补集这四个方法
    /***Calculatestheintersectionoftwoarrays.**@param{Array}arr1Thefirstarray.*@param{Array}arr2Thesecondarray.*@returns{Array}Anewarraycontainingtheelementspresentinbothinputarrays.*/functionintersection(arr1,arr......
  • 移动端的布局用过媒体查询吗?写出例子看看
    是的,移动端布局经常使用媒体查询。以下是一些例子,展示了如何使用媒体查询来创建响应式设计:1.基于视口宽度的基本媒体查询:/*在视口宽度小于768px时应用样式*/@media(max-width:768px){body{font-size:16px;}.container{width:90%;/*将容器宽度......
  • 写出几个初始化CSS的样式,并解释说明为什么要这样写
    以下是一些初始化CSS样式,并解释了为什么这样写:/*重置内外边距*/*{margin:0;padding:0;}/*继承box-sizing*/*,*::before,*::after{box-sizing:inherit;}html{box-sizing:border-box;/*使用border-box模型*/font-size:62.5%;/*设置......
  • js异步加载有哪些方案?
    JavaScript异步加载方案有很多,它们的目的都是为了防止JavaScript阻塞HTML解析和渲染,从而提高页面加载速度和用户体验。以下是一些常用的方案:1.<scriptasync>:作用:告诉浏览器立即下载脚本,并在下载完成后尽快执行,不会阻塞HTML解析器。多个async脚本的执行顺序不确定,哪个先下......
  • ssm179大学生创新创业平台项目管理子系统设计与实现+jsp(论文+源码)_kaic
      毕业设计(论文)题目:大学生创新创业平台项目管理子系统的设计与实现      摘 要互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对大学生创新创业......
  • ssm178高校工会提案管理信息系统的设计与开发+jsp(论文+源码)_kaic
     毕业设计(论文)题目:高校工会提案管理信息系统设计与实现摘 要现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本高校工会提案管理信息系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内......
  • js弹出层Lightbox图片画廊插件spotlight.js
    在线预览 下载spotlight.js是一款js弹出层Lightbox图片画廊插件。该插件在点击图片的缩略图时,以lightbox的方式弹出图片画廊,支持对图片进行放大、缩小、全屏、前后切换等操作。 使用方法在页面中引入下面的文件。<scripttype="text/javascript"src="spotlight.bu......
  • js+jquery实现贪吃蛇经典小游戏
    项目只使用到了html,css,js,jquery技术点,没有使用游戏框架,下载本地直接双击index.html运行即可体验游戏效果。项目展示进入游戏游戏开始游戏暂停html文件<!DOCTYPEhtml><html><head><metacharset="UTF-8"><metaname="viewport"content="width=devic......
  • 645. 大学生HTML5毕业设计 ―【基于html汽车商城网站页面设计与实现】Bootsrap框架响
    目录一、网页概述二、网页文件三、网页效果四、代码展示1.html2.CSS3.JS五、总结1.简洁实用2.使用方便3.整体性好4.形象突出5.交互式强六、更多推荐欢迎光临仙女的网页世界!这里有各行各业的Web前端网页制作的案例,样式齐全新颖,并持续更新!感谢CSDN,提供了这么......
  • 95. 大学生HTML5期末大作业 ―【哆啦A梦动漫主题网页】 Web前端网页制作 html5+css3+j
    目录一、更多推荐二、网页简介三、网页文件四、网页效果五、代码展示1.html2.CSS3.JS六、总结1.简洁实用2.使用方便3.整体性好4.形象突出5.交互式强七、更多推荐一、更多推荐欢迎来到我的CSDN主页!Web前端网页制作、大学生期末大作业、课程设计、毕业设计、......