JavaScript循环语句

JavaScript中的循环语句有三种:for循环、while循环和do...while循环。这些循环语句可以帮助我们重复执行一段代码,直到满足某个条件为止。

  1. for循环: for循环是最常用的循环语句之一,它包含一个初始化表达式、一个条件表达式和一个递增/递减表达式。例如:
for (let i = 0; i < 10; i++) {console.log(i);
}

上面的代码将会打印出0到9的数字。for循环的难点在于理解循环的三个部分的执行顺序和注意循环变量的作用范围。

在遍历的时候,采用一般的 for 循环和 for...in 循环得到的结果不同。

for...in 循环会自动跳过那些没被赋值的元素,而 for 循环则不会,它会显示出 undefined。如:

<button onclick="myFunction()">点击这里</button>
<p id="demo"></p>
<script>
function myFunction(){var array = new Array();var x;var txt=""array[0] = 1;array[3] = 4;array[4] = 7;array[10] = 9;for( x in array ){alert(array[x]);     // 依次显示出 1 4 7 9} alert(array.length);    // 结果是11for( var i=0 ; i<4 ; i++){alert(array[i]);     // 依次显示出 1 undefined undefined 4 }document.getElementById("demo").innerHTML = txt;
}
</script>
  1. while循环: while循环只有一个条件表达式,只要条件为真,就会一直执行循环体中的代码。例如:
let i = 0;
while (i < 10) {console.log(i);i++;
}

这段代码与上面的for循环代码功能相同,也会打印出0到9的数字。while循环的难点在于注意循环条件的设置,确保循环最终会结束。

  1. do...while循环: do...while循环与while循环类似,但是它会先执行循环体中的代码,然后再判断条件是否为真。至少会执行一次循环体中的代码。例如:
let i = 0;
do {console.log(i);i++;
} while (i < 10);

这段代码也会打印出0到9的数字,不同的是即使条件不满足,循环体中的代码至少会执行一次。do...while循环的难点在于理解循环体中代码的执行顺序。

特殊情况的举例:

  1. 无限循环: 有时候我们可能因为某些原因意外地创建了一个无限循环。例如:
for (;;) {console.log("无限循环");
}

这段代码会一直执行,因为没有设置循环的结束条件。在处理无限循环时,我们可以使用break语句来提前结束循环。

  1. 循环嵌套: 循环之间可以相互嵌套,这样可以实现更复杂的循环逻辑。例如:
for (let i = 0; i < 3; i++) {for (let j = 0; j < 3; j++) {console.log(i, j);}
}

这段代码会打印出0到2之间的数字的所有组合。在处理循环嵌套时,我们需要注意循环变量的作用范围和内外循环的执行顺序。

注意:

  • for : 比较适合遍历数组,字符串等等。
  •  for in : 比较适合遍历对象,遍历对象时使用这个再合适不过了。
  •  while : while 的话,与 for 的使用场景差不多。唯一不同的是,遍历的条件必须满足。
  •  do while : 至少执行一边的循环,遍历数组和字符串也是很方便。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/20140.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

富士摄像机X-H2S MOV格式化后重新写入后的恢复方法

X-H2S是富士数码的一款旗舰机型&#xff0c;支持4K/6K高清&#xff0c;视频编码为最新的HVC。下面我们来看下富士数码摄像机恢复案例。 故障存储:512G存储卡 Exfat文件系统 故障现象: 512G的卡误格式化后又进行了拍摄&#xff0c;卡使用了120G不到的空间&#xff0c;其它底…

【副业】12种程序员副业大汇总

1&#xff1a;写博客。技术能力可以的写技术文章输出&#xff0c;比如当前网站、掘金、阿里云社区、腾讯云社区、其他社区。 2&#xff1a;卖课程。大厂高P跟知识付费平台合作、录课卖课程、比如极课时间、慕课网、腾讯课堂。 3&#xff1a;写书。技术大拿出书&#xff0c;挣稿…

简述Vue中同时发送多个请求怎么操作?

在Vue中同时发送多个请求&#xff0c;我们通常使用axios这个库&#xff0c;因为它基于Promise&#xff0c;可以很好地处理异步操作。以下是两种常用的方法来同时发送多个请求&#xff1a; 方法一&#xff1a;使用Promise.all() 定义多个请求&#xff1a; 使用axios.get()或axi…

【EFK日志系统】docker一键部署kibana、es-head

docker一键部署kibana、es-head kibana部署es-head部署 上一篇文章搭建了es集群 规划服务器是 es01:172.23.165.185 es02:172.23.165.186 es03:172.23.165.187 那么kibana就搭建在主节点es01:172.23.165.185 按照顺序参考&#xff1a; docker一键部署EFK系统&#xff08;elas…

使用 Vue 3 和 JsBarcode 开发一维码显示组件

在现代前端开发中&#xff0c;条形码&#xff08;或称一维码&#xff09;在许多应用场景中非常常见&#xff0c;例如商品管理、物流跟踪等。本文将介绍如何使用 Vue 3 和 JsBarcode 库来创建一个灵活的一维码显示组件&#xff0c;并展示如何在应用中使用它。 1. 安装必要的依赖…

简述Vue 的响应式原理中 Object.defineProperty 有什 么缺陷 ?

Vue.js 2.x 的响应式原理主要依赖于 Object.defineProperty 方法来实现数据劫持&#xff0c;即当数据发生变化时&#xff0c;能够触发视图更新。然而&#xff0c;Object.defineProperty 方法在 Vue 的响应式系统中存在一些缺陷&#xff1a; 无法监听数组的变化&#xff1a; Obj…

详解生成式人工智能的开发过程

回到机器学习的“古老”时代&#xff0c;在您可以使用大型语言模型&#xff08;LLM&#xff09;作为调优模型的基础之前&#xff0c;您基本上必须在所有数据上训练每个可能的机器学习模型&#xff0c;以找到最佳&#xff08;或最不糟糕&#xff09;的拟合。 开发生成式人工智能…

【linux】线程同步和生产消费者模型

线程同步 当我们多线程访问同一个临界资源时&#xff0c;会造成并发访问一个临界资源&#xff0c;使得临界资源数据不安全&#xff0c;我们引入了锁的概念&#xff0c;解决了临界资源访问不安全的情况&#xff0c;对于线程而言竞争锁的能力有强有弱&#xff0c;对于之前就抢到…

系统架构设计师【第9章】: 软件可靠性基础知识 (核心总结)

文章目录 9.1 软件可靠性基本概念9.1.1 软件可靠性定义9.1.2 软件可靠性的定量描述9.1.3 可靠性目标9.1.4 可靠性测试的意义9.1.5 广义的可靠性测试与狭义的可靠性测试 9.2 软件可靠性建模9.2.1 影响软件可靠性的因素9.2.2 软件可靠性的建模方法9.2.3 软件的可靠性模…

实物资产的市场主线将逐步回归

民生证券认为&#xff0c;投资者逐渐意识到长期趋势并没有发生变化&#xff0c;这或许正是本周最大的变化。在预期博弈重回冷静期后&#xff0c;去金融化背景下实物资源占优的市场主线也将逐步回归。 1 高低切换后的冷静期 从4月下旬至上周&#xff0c;A股市场呈现出由高位资产…

用windows server backup备份文件夹到网络共享文件夹并恢复

一、备份 开始 运行windows server backup,在右边的窗格中点击“备份计划” 选择备份配置 因为我们要备份的是一个文件夹&#xff0c;所以&#xff0c;选“自定义”&#xff0c;卷即为磁盘分区。 选择要备份的项 点击添加项目&#xff0c;可依次添加多个备份项目。 勾选需要…

汽车MCU虚拟化--对中断虚拟化的思考(2)

目录 1.引入 2.TC4xx如何实现中断虚拟化 3.小结 1.引入 其实不管内核怎么变&#xff0c;针对中断虚拟化无非就是上面两种&#xff0c;要么透传给VM&#xff0c;要么由Hypervisor统一分发。汽车MCU虚拟化--对中断虚拟化的思考(1)-CSDN博客 那么&#xff0c;作为车规MCU龙头…

MySQL 视图(2)

上一篇&#xff1a;MySQL视图&#xff08;1&#xff09; 基于其他视图 案例对 WITH [CASCADED | LOCAL] CHECK OPTION 进行释义 创建视图时&#xff0c;可以基于表 / 多个表&#xff0c;也可以使用 其他视图表 / 其他视图 其他视图 的方式进行组合。 总结 更新视图&#x…

【HTML】tabindex

当给 div 标签以 button 角色&#xff1a; <div role"button">这时要指定其 tabindex&#xff0c;因此正确的写法是&#xff1a; <div role"button" tabindex"0">索引值不应当大于0&#xff0c;见a11y-positive-tabindex

Open3D(C++) Ransac拟合多项式曲线

目录 一、算法原理一、代码实现三、结果展示本文由CSDN点云侠原创,Open3D(C++) Ransac拟合多项式曲线,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT生成的文章。 一、算法原理 RANSAC(Random Sample Consensus)是一种用于拟合模型的迭…

设计模式深度解析:分布式与中心化

设计模式在软件开发中扮演着至关重要的角色,它们提供了一套经过验证的解决方案,用于解决常见的设计问题。在分布式和中心化这两种不同的系统架构中,设计模式的应用也有所不同。以下是对这两种架构下设计模式的深度解析: 分布式系统设计模式 在分布式系统中,由于系统被拆…

004 仿muduo实现高性能服务器组件_Buffer模块与Socket模块的实现

​&#x1f308;个人主页&#xff1a;Fan_558 &#x1f525; 系列专栏&#xff1a;仿muduo &#x1f339;关注我&#x1f4aa;&#x1f3fb;带你学更多知识 文章目录 前言Buffer模块Socket模块 小结 前言 这章将会向你介绍仿muduo高性能服务器组件的buffer模块与socket模块的实…

【Leetcode 706 】设计哈希映射——数组嵌套链表(限制哈希Key)

题目 不使用任何内建的哈希表库设计一个哈希映射&#xff08;HashMap&#xff09;。 实现 MyHashMap 类&#xff1a; MyHashMap() 用空映射初始化对象void put(int key, int value) 向 HashMap 插入一个键值对 (key, value) 。如果 key 已经存在于映射中&#xff0c;则更新其…

MATLAB的plot3使用技巧|更改视角|例程分享链接

plot3命令 MATLAB的plot3函数是用来绘制3D图形的函数。它可以将三维数据可视化为线段、点、曲线等形式。plot3函数可以用于绘制三维空间中的曲线、曲面、散点图等。 plot3函数的基本用法是&#xff1a; plot3(X,Y,Z)&#xff1a;绘制三维线段&#xff0c;其中X、Y、Z分别是包…

两个双指针 的 “他“和“ 她“会相遇么? —— “双指针“算法 (Java版)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人能接…