Javascript 循环结构while do while for实例讲解

Javascript 循环结构while do while for实例讲解

目录

Javascript 循环结构while do while for实例讲解

一、while语句

二、do…while语句

三、for循环

疑难解答


 

我们从上一节课知道,JavaScript循环结构总有3种:

  • (1)while语句;
  • (2)do……while语句;
  • (3)for语句;

下面,我们对这些循环结构进行逐一讲解。

 

一、while语句

while语句是条件判断语句,也是循环语句。

语法:

while(条件表达式语句)
{执行语句块;
}

说明:

当“条件表达式语句”的返回值为true时,就会执行大括号“{}”中的语句块,当执行完大括号“{}”的语句块后,再次检测条件表达式的返回值,如果返回值还为true,则重复执行大括号“{}”中的语句块,直到返回值为false时,才结束整个循环过程,接着往下执行while代码段后面的程序代码。

举例:计算1+2+3+…+100的值

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title><script type="text/javascript">var n=1;var sum=0;while(n<=100){sum+=n;    //等价于sum=sum+n;n++;}document.write("1+2+3+…+100="+sum);</script>
</head>
<body>
</body>
</html>

在浏览器预览效果如下:

 

5726886aed5846e9b82ef99d11621cde.png

使用while语句要注意以下几点:

(1)应该使用大括号“{}”包含多条语句,即使是一条语句也最好使用大括号;

(2)在循环体中应该包含使得循环可以退出的语句,比如上面的“i++”。对于循环体,要是没有条件,循环就会无休止地运作下去,变成一个“死循环”,从而可能导致浏览器崩溃;

 

二、do…while语句

“do…while语句”跟while语句是非常类似的,唯一的区别在于:while语句先判断是否符合条件,然后再执行循环体语句;do…while语句先执行循环体语句一次,然后再判断是否符合条件。

语法:

do
{执行语句块;
}
while(条件表达式语句);

说明:

do…while语句是先无条件执行循环体一次再判断是否符合条件的,如果符合条件,则重复执行循环体,如果不符合条件,则退出循环。

do…while语句结尾处的while条件语句的括号后有一个分号“;”,该分号一定不能省略,这是初学者非常非常容易忽略的一点,大家千万要记得呀。

举例:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title><script type="text/javascript">var n=1;var sum=0;do{sum+=n;    //等价于sum=sum+n;n++;}while(n<=100)document.write("1+2+3+…+100="+sum);
</script>
</head>
<body>
</body>
</html>

在浏览器预览效果如下:

 

5726886aed5846e9b82ef99d11621cde.png

分析:

大家拿上面一个例子和while语句的例子对比一下就知道,while语句和do…while语句是可以转换的。

在此总结一下两者之间的区别:

(1)do…while语句和while语句是可以相互转换的;

(2)do…while语句将先执行一遍循环体中的语句,然后才判断条件表达式的真假。这是它与while语句的本质区别;

 

三、for循环

for语句通常由2部分组成:一是“条件控制部分”,二是“循环体”。

语法:

for(初始化表达式;循环条件表达式;循环后的操作表达式)
{执行语句块;
}

说明:

在使用for循环之前要先设定一个计数器变量,可以在for循环之前定义,也可以在使用时直接进行定义。

上面的语法中,“初始化表达式”表示计数器变量的初始值;“循环条件表达式”是一个计数器变量的表达式,决定了计数器的最大值;

要想理解上面的语法,还不如直接看个例子。

举例:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title><script type="text/javascript">for(var i=0;i<5;i++ ){document.write(i+"<br/>");}
</script>
</head>
<body>
</body>
</html>

在浏览器预览效果如下:

 

22dc84e5b34bb4efe39f379058ade719.png

分析:

for(var i=0;i<5;i++ )
{document.write(i+"<br/>");
}

其实上面这段代码等价于下面这段代码:

while(i<5)
{document.write(i+"<br/>");i++;
}

大家可以在“在线运行”的代码中修改并测试一下效果。

对于for语句的语法形式大家可能一时接受不来,但是大家慢慢实践多了就会记住了。

 

疑难解答

为什么会出现死循环?

在使用for语句时,需要保证循环可以正常结束,也就是保证循环条件的结果存在不为true的情况,否则循环体会无限地执行下去,从而出现死循环现象。

例如:

i=5;
while(i!=4)
{document.write(i+"<br/>");i++;
}

上面这段代码就没有结束条件,因此会无限地执行下去。在JavaScript入门教程学习中,大家在写for语句的时候要特别地注意一下。

 

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

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

相关文章

ARM CCA机密计算硬件架构之内存管理

实施了TrustZone安全扩展的Arm A-profile处理器呈现两个物理地址空间(PAS): 非安全物理地址空间安全物理地址空间Realm管理扩展增加了两个PAS: Realm物理地址空间Root物理地址空间下图显示了这些物理地址空间以及如何在工作系统中实施这些空间: 正如表格所示,根状态能够访…

openssl 命令详解

openssl genrsa 命令产生私钥 openssl genrsa 命令是会用来生成 RSA 私有秘钥&#xff0c;不会生成公钥&#xff0c;因为公钥提取自私钥。生成时是可以指定私钥长度和密码保护。 如果需要查看公钥或生成公钥&#xff0c;可以使用 openssl rsa 命令。 命令语法&#xff1a; ope…

Vue3全局属性app.config.globalProperties

文章目录 一、概念二、实践2.1、定义2.2、使用 三、最后 一、概念 一个用于注册能够被应用内所有组件实例访问到的全局属性的对象。点击【前往】访问官网 二、实践 2.1、定义 在main.ts文件中设置app.config.globalPropertie import {createApp} from vue import ElementPl…

会声会影2023渲染闪退怎么办

​ 会声会影2023是一款功能强大&#xff0c;操作简单的视频剪辑软件。在使用会声会影剪辑视频后&#xff0c;我们要对视频进行渲染&#xff0c;有时会出现渲染到一半闪退&#xff0c;或是帧不可读的问题&#xff0c;那么遇到这些情况我们该怎么办呢&#xff1f;下面将为大家介绍…

ssm基于冲突动态监测算法的健身房预约系统的设计与实现论文

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装健身房预约系统软件来发挥其高效地信息处理的作用&#xff…

攻防世界easyphp解题

攻防世界easyphp解题 <?php highlight_file(__FILE__); $key1 0; $key2 0;$a $_GET[a]; $b $_GET[b];if(isset($a) && intval($a) > 6000000 && strlen($a) < 3){if(isset($b) && 8b184b substr(md5($b),-6,6)){$key1 1;}else{die(&q…

PAT 乙级 1043 输出PATest

解题思路&#xff1a;对于c来说hash函数求出各个符号的数量&#xff0c;不为0时就输出即可&#xff0c;python利用字符串count函数就可以了。 c语言代码如下: #include<stdio.h> int output_c(char c,int *count) {if(*count!0){putchar(c);(*count)--;}return 1; } int…

Jenkins基础教程

目录 第一章、快速了解Jenkins1.1&#xff09;Jenkins中一些概念介绍1.2&#xff09;Jenkins和maven用途上的区别1.3&#xff09;为什么使用Jenkins1.4&#xff09;学习过程中的疑问 第二章、安装Jenkins2.1&#xff09;安装之前的准备2.2&#xff09;Windows中Jenkins下载安装…

面向对象(类和对象,对象内存图,成员变量和局部变量,封装,构造方法)

1. 类和对象 1.1 类和对象的理解 客观存在的事物皆为对象 &#xff0c;所以我们也常常说万物皆对象。 类 类的理解 类是对现实生活中一类具有共同属性和行为的事物的抽象类是对象的数据类型&#xff0c;类是具有相同属性和行为的一组对象的集合简单理解&#xff1a;类就是对…

计算机网络(1)

计算机网络&#xff08;1&#xff09; 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 计算机网络和因特网&#xff08;1&#xff09;因特网概念解读服务常见的服务 协议网络边缘特点强调 网络核心特点强调 小程一言 我的计算机网络专栏&#xff0c;是自己在计算机网络…

Python模拟技巧实现自动抽屉登录和自动点赞

目录 一、引言 二、准备工作 三、自动抽屉登录 四、自动点赞 五、注意事项 六、案例分析 七、总结 一、引言 随着互联网的普及&#xff0c;人们越来越依赖于各种在线平台进行社交互动和信息获取。在这些平台上&#xff0c;用户需要登录才能享受各种服务&#xff0c;同时…

【DevOps】搭建 项目管理软件 禅道

文章目录 1、简介2、环境要求3、搭建部署环境3.1. 安装Apache服务3.2. 安装PHP环境&#xff08;以php7.0为例 &#xff09;3.3. 安装MySQL服务 4、搭建禅道4.1、下载解压4.2、 配置4.2.1、 启动4.2.2、自启动4.2.3、确认是否开机启动 5、成功安装 1、简介 禅道是国产开源项目管…

Halcon底帽运算bottom_hat

Halcon底帽运算 底帽运算的原理是用原始的二值图像减去闭运算的图像。闭运算的目的是对某些局部区域进行“填补”&#xff0c;如填空洞、使分离的边缘相连接等。而底帽运算正是用来提取这些用于填补的区域的。图&#xff08;a&#xff09;为从二值图像中提取出的亮的区域&…

解决 Nginx 反向代理中的 DNS 解析问题:从挑战到突破20231228

引言 在使用 Nginx 作为反向代理服务器时&#xff0c;我们可能会遇到各种配置和网络问题。最近&#xff0c;我遇到了一个有趣的挑战&#xff1a;Nginx 在反向代理配置中无法解析特定的域名&#xff0c;导致 502 错误。这个问题的解决过程不仅揭示了 Nginx 的一个不太为人知的功…

目标检测-One Stage-SSD

文章目录 前言一、SSD的网络结构和流程二、SSD的创新点总结 前言 根据前文目标检测-One Stage-YOLOv1可以看出YOLOv1的主要缺点是&#xff1a; 每个格子针对目标框的回归是不加限制的&#xff0c;导致目标的定位并不是很精准和Faster RCNN等先进Two Stage算法相比&#xff0c…

(NeRF学习)NeRFStudio安装win11

参考&#xff1a; 【深度学习】【三维重建】windows11环境配置tiny-cuda-nn详细教程nerfstudio介绍及在windows上的配置、使用NeRFStudio官网githubRuntimeError: PytorchStreamReader failed reading zip archive: failed finding central directory原因及解决 目录 requireme…

计算机毕业设计 基于SSM的果蔬作物疾病防治系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

理解SQL中not in 与null值的真实含义

A not in B的原理是拿A表值与B表值做是否不等的比较, 也就是a ! b. 在sql中, null是缺失未知值而不是空值。 当你判断任意值a ! null时, 官方说, “You cannot use arithmetic comparison operators such as , <, or <> to test for NULL”, 任何与null值的对比都将返…

复兴计划01-lc06

StringBuilder和StringBuffer的区别 1. StringBuffer和StringBuilder都是用于字符串动态拼接,但是StringBuffer拼接的函数方法的实现中用了synchornized上锁&#xff0c;效率较低&#xff0c;不过可以用于多线程以此来维护线程安全&#xff1b;相比之下&#xff0c;StringBuil…

istio 限流:本地限流+全局限流

istio 限流在官网的位置是 任务->策略执行->使用 Envoy 启用速率限制 istio 限流基于数据面 Envoy 开发&#xff0c;Envoy 支持两个类型限流&#xff0c;分别是本地限流和全局限流&#xff08;本地限流和全局限流可以一起使用&#xff09; 开始之前 安装 istio部署 boo…