目录

一、代码块

二、if语句(条件判断语句)

三、if-else语句(条件分支语句)

四、if练习(prompt()函数、isNaN()函数)

五、switch语句(条件分支语句)

六、while循环(循环语句)和练习

七、do-while循环

八、for循环

一、代码块

使用 { } 来创建代码块,代码块可以用来对代码进行分组

同一个代码块中的代码,就是同一组代码,一个代码块中的代码要么都执行要么都不执行

let 和 var的区别

-在JS中,使用 let 声明的变量具有块作用域

在代码块中声明的变量无法在代码块的外部访问

 <script>{let a = 5}console.log(a)//无法输出打印a,因为let声明的变量具有块作用域</script>

- 使用 var 声明的变量,不具有块作用域

流程控制语句可以用来改变程序执行的顺序

1.条件判断语句

2.条件分支语句

3.循环语句

二、if语句(条件判断语句)

语法:if(表达式){

                    语句...

                }

执行流程:if语句在执行会对 if 后的条件表达式进行求值判断,

如果结果为 true,则执行 if 后的语句;

如果为 false,则不执行。

if语句只会控制紧随其后的那一行代码,如果希望可以控制多行代码,可以使用 { } 将语句括起来。

最佳实践:即使 if 后只有1行代码,我们也应该编写代码块,这样结构会更加清晰

如果 if 后添加的表达式不是布尔值,会转换为布尔值然后再运算

 <script>let a = 100if(a > 10){alert('a大于10')alert(122)}//添加{}形成代码块if(100){alert('你猜我执行吗?')//执行,表达式不是布尔值,则转换为布尔值再运算}      </script>

三、if-else语句(条件分支语句)

1. if-else语句:

- 语法:if(条件表达式){

                       语句...

           }else{

                        语句...

           }

- 执行流程:if-else 执行时,先对条件表达式进行求值判断,

如果为 true,则执行 if 后的语句;

如果结果 false,则执行 else 后的语句。

2. if-else if-else语句:

语法:if(条件表达式){

                       语句...

           }else  if(条件表达式){

                        语句...

           }else  if(条件表达式){

                        语句...

           }else{

                        语句...

           }

执行流程:if-else if-else语句,会自上向下依次对 if 后的条件表达式进行求值判断:

如果条件表达式为 true,则执行当前 if 后的语句,执行完毕语句结束

如果条件表达式为 false,则继续向下判断,直到找到 true为止

如果所有的条件表达式都是 false,则执行 else 后的语句

注意:if-else if-else语句中只会有一个代码块被执行,一旦有执行的代码块,下边的条件都不会再继续判断了,所以一定要注意条件的编写顺序

四、if练习(prompt()函数、isNaN()函数)

prompt()函数可以用来获取拥护输入的内容,它会将用户输入的内容以字符串的形式返回,可以通过变量来接收。可以在括号里写提示文字,prompt("请输入一个整数:")

如何获取用户输入内容:let num = +prompt("请输入一个整数:") //进行了类型转换,转换为数值

isNaN()函数来检查一个值是否是NaN,若是则返回 true,否则返回 false.

练习1:编写一个程序,获取一个用户输入的整数,然后通过程序显示这个数是奇数还是偶数。

 <script>// let num = +prompt("请输入一个整数")let num = parseInt(prompt("请输入一个整数"))//可以对输入的小数取整//验证一下,用户输入是否合法,只有是有效数字时,我们才检查它是否是偶数//我们不能使用==或===来检查一个值是否是NaN// 可以通过使用isNaN()函数来检查一个值是否是NaNif(isNaN(num)){alert('你的输入有问题,请输入整数')}else{if(num % 2 == 0){alert(`${num}是偶数`)//反单引号}else{alert(`${num}是奇数`)}}</script>

1.使用+prompt()可以将用户输入内容转换为数值,但是若用户输入为小数时,接着进行运算是错误,会输出小数也是奇数,而之前学过parseInt()函数可以将字符串转换为整数。

2.因为用户输入的内容可能不是合法的有效数字(如“abc”),转换为数值时会将其转换为NaN,但是我们不能使用==或===来判断一个值是否是NaN(因为NaN与任何值包括它自身都不相等),可以使用isNaN()函数来检查一个值是否是NaN,若是则返回true,否则返回false.

更优:把用户输入的小数也检查了,若其是小数,则与1的余数不等于0

 <script>let num = +prompt("请输入一个整数")if(isNaN(num) || num % 1 !== 0){//输入的字符串不是合法的有效数字或者是小数的情况alert('你的输入有问题,请输入整数')}else{if(num % 2 == 0){alert(`${num}是偶数`)//反单引号}else{alert(`${num}是奇数`)}}</script>

练习2:

从键盘输入小明的成绩:

当成绩为100时,‘奖励一辆BMW’

当成绩为[80-99]时,‘奖励一台iphone’

当成绩为[60-79]时,‘奖励一本参考书’

其他时,什么奖励也没有

 <script>let grade = +prompt("请输入小明的期末成绩")// 检查grade是否合法,成绩应为0-100之间的数字if(isNaN(grade) || grade > 100 || grade < 0){alert("你输入的成绩有误,请输入0—100之间的数字")}else{if(grade === 100){alert("奖励一台BMW")}else if(grade >= 80){alert("奖励一台iphone")}else if(grade >= 60){alert("奖励一本参考书")}else{alert("什么奖励也没有")}}</script>

注意:限制分数是在0-100之间,且应该是0-100的数字。

练习3:

高:180cm以上,富:1000万以上,帅:500以上

如果这三个条件同时满足,则:“我一定要嫁给他”

如果这三个条件有为真的情况,则:“嫁吧,比上不足,比下有余”

如果这三个条件都不满足,则:“不嫁”

 <script>// 获取男生的数据let height = +prompt("请输入身高(cm)")let health = +prompt("请输入财富(万)")let handsome = +prompt("请输入颜值(像素)")if(isNaN(height) || isNaN(health) || isNaN(handsome)){alert("您的输入有误")}else{if(height > 180 && health > 1000 && handsome > 500){//如果这三个条件同时满足,则:“我一定要嫁给他”alert("我一定要嫁给他")}else if(height > 180 || health > 1000 || handsome > 500){//如果这三个条件有为真的情况,则:“嫁吧,比上不足,比下有余”alert("嫁吧,比上不足,比下有余")}else{//如果这三个条件都不满足,则:“不嫁”alert("不嫁")}}</script>

五、switch语句(条件分支语句)

语法:switch(表达式){

                        case 表达式:

                                代码...

                                (break)

                        case 表达式:

                                代码...

                                 (break)

                        default:

                                代码...

                                 (break)

          }

执行流程:switch语句在执行时,会依次将 switch 后的表达式和 case 后的表达式进行全等比较

如果比较结果为true,则自当前case处开始执行代码

如果比较结果为false,则继续比较其他case后的表达式,直到找到true为止

如果所有结果都是false,则执行default后的语句,default语句可以放在任意位置

注意:当比较结果为true时,会从当前case处开始执行代码,也就是说case是代码执行的起始位置

这就意味着只要是当前case后面的代码都会执行,可以使用break来避免执行其他的case.

条件表达式与表达式的区别:条件表达式返回的是布尔值(if语句中用条件表达式),而表达式返回啥值都可(switch语句用表达式)

总结:switch语句和if语句的功能是重复,switch能做的事if也能做,反之亦然。

它们最大的不同在于,switch在多个全等判断时,结构比较清晰。

如:想根据用户输入的数字显示中文,1显示壹,2显示贰,3显示叁等(两个语句代码如下,switch结构更清晰。)

使用if语句:

 <script>  let num = +prompt('请输入一个数字');if(num === 1){alert('壹')}else if(num === 2){alert('贰')}else if(num === 3){alert('叁')}</script>

使用switch语句:

 <script>let num = +prompt('请输入一个数字');switch(num){case 1:alert('壹')break//break可以用来结束switch语句case 2:alert('贰')breakcase 3:alert('叁')break}</script>

六、while循环(循环语句)和练习

通过循环语句可以使指定的代码反复执行

JS中一共有三种循环语句

while语句

do-while语句

for语句

while语句:

语法: while(条件表达式){
                        语句...

            }

执行流程:while语句在执行时,会先对条件表达式进行判断,

如果结果为true,则执行循环体,执行完毕,继续判断;

如果为true,则再次执行循环体,执行完毕,继续判断,如此重复;

直到条件表达式结果为false时,循环结束。

当一个循环的条件表达式恒为true时,这个循环就是一个死循环,会一直执行(慎用)。

通常编写一个循环,需要三个要件

  1.初始化表达式(初始化变量)

        2.条件表达式(设置循环运行的条件)

        3.更新表达式(修改初始化变量)

 <script>  // 初始化表达式let a = 0;//条件表达式while(a < 5){alert(a)a ++//更新表达式}</script>

下面是其另一种写法,并没有将变量写入条件表达式中,而是在循环体中写一个if语句来判断循环是否结束。

 <script>  // 初始化表达式let i = 0;//条件表达式while(1){console.log(i)i ++//更新表达式if(i == 5){break}}</script>

练习:假设银行存款的年利率为5%,问1000块钱存多少年可以变成5000块。

两种写法:

 <script>  let i = 1;//条件表达式let money = 1000while(1){money = money + money * 0.05          if(money >= 5000){console.log(i)break}i ++//更新表达式}</script>
 <script>//创建一个变量表示钱数  let money = 1000//创建一个计数器来记录循环执行的次数let year = 0//编写循环,计算存款的年数      while(money < 5000){money *= 1.05//循环每执行一次,就相当于钱存了一年year++}console.log(`需要存${year}年,最终的钱数为${money}元`)//反单引号</script>

七、do-while循环

语法:do{

                   语句...

           }while(条件表达式)

执行顺序:do-while语句在执行时,会先执行do后的循环体,

执行完毕后,会对while后的条件表达式进行判断;

如果为false,则循环终止;

如果为true,则继续执行循环体,依次类推。

和while的区别:

while语句是先判断再执行

do-while语句是先执行再判断

实质的区别:

do-while语句可以保证循环至少执行一次

 <script>let i = 0do{console.log(i)i++}while(i < 5)</script>

八、for循环

for循环和while循环没有本质区别,都是用来反复执行代码

不同点就是语法结构,for循环更加清晰

语法:for(初始化表达式;条件表达式;更新表达式){

                   语句...

           }

执行流程:

1.执行初始化表达式,初始化变量

2.执行条件表达式,判断循环是否执行(true执行,false终止)

3.判断结果为true,则执行循环体

4.执行更新表达式,对初始化变量进行修改

5.重复2,直到判断为false为止

例子:

 <script>for(let i=0; i<5;i++){console.log(i)}</script>

初始化表达式,在循环的整个生命周期中只会执行1次

for循环中的三个表达式都可以省略,如for(;;)则是死循环

使用 let 在for循环的()中声明的变量是局部变量,只能在for循环内部访问

使用var在for循环的()中声明的变量可以在for循环的外部访问

创建死循环的方式:

while(1){}
        for(;;){}

代码块、if语句、if-else语句、switch语句、while循环、do-while循环、for循环——JS流程控制相关推荐

  1. 【编译原理笔记14】中间代码生成:布尔表达式的回填,控制流语句的回填,switch语句的翻译,过程调用语句的翻译

    本次笔记内容: 6-8 布尔表达式的回填 6-9 控制流语句的回填 6-10 SWITCH语句的翻译 6-11 过程调用语句的翻译 本节课幻灯片,见于我的 GitHub 仓库:第14讲 中间代码生成_ ...

  2. 在python中要表示一个空的代码块可以使用空语句什么_Python条件判断语句if

    Apple iPhone 11 (A2223) 128GB 黑色 移动联通电信4G手机 双卡双待 4999元包邮 去购买 > 程序在一般情况下是按顺序执行的,就像流水账一样,一条一条从上往下顺序 ...

  3. java用switch语句算,Java的switch语句与条件运算符

    文章导读 [前面学习了条件结构的if语句,可以解决多条件判断的情况.除了if语句外,Java语言还提供了switch语句和条件运算符用于简化条件判断语句的编写.本篇探讨Java的switch语句和条件 ...

  4. oracle的switch+case语句吗,2.7 switch 语句中的 case 范围

    2.7 switch 语句中的 case 范围 在标准 C 中,switch 语句中的 case 标签只能有一个关联值.Solaris Studio C 允许使用某些编译器中使用的扩展(称为 case ...

  5. continue语句可以用在switch语句和3种循环语句中_必须知道的C语言知识细节:break、continue语句区别...

    break语句.continue语句都是C语言标准规定的跳转类语句,能够实现程序无条件转向另一处执行. break和continue中在循环体中经常出现,因此必须掌握其区别,避免出错. 先复习下两种语 ...

  6. continue语句可以用在switch语句和3种循环语句中_Java中的循环

    循环是Java中应用最为广泛的一个知识点,所以也是很需要掌握的. 其中循环包括:1.循环控制.2.循环嵌套.3.break与continue.4.死循环 一.循环控制 1.for循环 for循环结构: ...

  7. C语言case后语句省略不写,switch语句基础理解与分析

    switch语句和if语句最为相似,语法接近C语言. switch(expression) { case   value:  statement break; case   value:  state ...

  8. 再php用if语句实现成绩,php switch语句的使用

    在众多的php条件语句里,基础的判断我们都可以用if语句来解决.这里有些人就要说了,还有switch语句可以进行值的比较.从使用的复杂度来说,switch语句功能上要更加丰富.下面我们就php中swi ...

  9. java switch配合return_关于Java switch语句:关于Java switch语句 – 在每种情况下使用return和省略break...

    鉴于这种方法,这是否代表了一些令人震惊的风格或语义失误: private double translateSlider(int sliderVal) { switch (sliderVal) { ca ...

最新文章

  1. 数据结构算法的引言+时间复杂度
  2. 我国常用的投影坐标系_我国常用坐标系和高程系详解
  3. pdo-mysql_PHP: MySQL (PDO) - Manual
  4. 找工作?最容易遇到的Java面试题
  5. 刚体转动惯量的测定实验数据软件_物理吸附实验数据分析 第11部分 在Origin软件中由物理吸附等温线确定材料的t图比表面积的方法...
  6. 异步更新php数据库,ajax异步刷新实现更新数据库_jquery
  7. IOS-音乐播放器(附Demo)
  8. Oracle 高效学习的方法论
  9. Matlab实现sift特征检测和两幅图像的特征点匹配(D. Lowe)
  10. linux连接无线网络配置详解
  11. 【边学边记_10】——8 位7段数码管的动态显示
  12. php的外文参考文献_php英文文献翻译及参考文献
  13. 台湾半导体制造商台积电市值首次超越英特尔
  14. SWFUpload使用
  15. java jodd框架介绍及使用示例
  16. c++中类模板与结构体模板总结
  17. 上海2021高考小三门成绩查询,上海高考小三门怎么算分?附上海小三门等级对应分数...
  18. 计算机科学领域sci杂志,【分享】计算机类SCI杂志--其他(无重复) - 信息科学 - 小木虫 - 学术 科研 互动社区...
  19. 信息奥赛一本通1312:【例3.4】昆虫繁殖
  20. 赏红叶,是金秋心旷神怡之事

热门文章

  1. addEventListener和attachEvent的区别
  2. 学校无盘服务器带机量50台要求,锐起XP无盘单服务器带170台详细说明:老玩童
  3. 【在线工具】在线视频压缩工具
  4. mysql编写函数_mysql函数编写
  5. arm中r12(IP)的用途
  6. c语言细胞自动机,细胞自动机之兰顿蚂蚁
  7. 三菱Q系列QJ71C24N模块 MODBUS通信(含完整步骤+源代码)
  8. 腾讯云Linux服务器如何安装Discuz个人论坛?
  9. 我国首个纯太阳能无人机首飞成功!飞行高度可达2万米,相当于一颗“伪卫星”...
  10. java php 时间戳转日期_java时间戳转php时间戳