大家好!我是萧寒,今天给大家分享的是流程控制的三大语句。

文章目录

  • 初识JavaScript(四)
    • 流程控制语句
      • 顺序结构
      • 分支结构
        • if语句
        • if的加强版if else语句(双分支语句)
        • if 语句的超级加强版 if else if(多分支语句)
        • switch语句
      • 循环结构
        • 循环的目的
        • Js中的循环
        • for循环
      • continue 和break
      • 命名规范及其语法
      • **结束语**

初识JavaScript(四)

流程控制语句

在一个程序执行的过程,各条代码的执行顺序对结果是有直接影响的,汗多时候我们要通过控制代码的执行顺序来实现我们要完成的功能

简要理解:流程控制就是控制我们所写的代码按照什么样的顺序来执行,以此达到我们的目的。

流程控制主要有三种结构:分别是顺序结构,分支结构和循环结构,这三种结构代表代码执行的顺序。

顺序结构

顺序结构是程序中最简单的,最基础的流程控制,我们之前写的代码都属于顺序结构(也就是从上往下依次执行),它没有固定的语法结构,程序会按照代码的先后顺序,依次执行

分支结构

由上到下执行代码的过程中,根据不同的条件,执行不同的路径代码(执行代码多选一的过程),从而得到不同的结果

1.21js语言提供了两种分支结构语句

  • if语句
  • switch语句

if语句

//条件成立执行代码,否则什么也不做

if(条件表达式){

//条件成立执行的代码语==条件表达式为真才执行

}

语句可以理解为一个行为,循环语句和分支语句就是典型的语句,一个程序由很多个语句组成,一般情况下,会分割成一个一个的语句

代码示范

     var age=19;if(age>=18){console.log('你已经是成年人了');//输出你已经是成年人了,因为age=19;,大于18就会执行if里面的语句}var age=1;if(age>=18){console.log('你已经是成年人了');//啥也不输出。age=1;<18,不会执行if里面的语句,故啥没有}

执行流程

if的加强版if else语句(双分支语句)

语法结构

//条件成立,执行if里面代码,否则执行else里面的代码

if(条件表达式){

//满足条件执行的代码

}else{

//不满足条件执行的代码

}

执行流程

代码示范

     var age=prompt('请输入你的年龄');//用户输入if(age>=18){console.log('你可以喝酒了');}else{console.log('不好意思未成年人只能喝AD钙');}//判断年份是否为润年var year=prompt('请输入年份:');if(year%4==0&&year%100!=0||year%400==0){alert('您输入的年份是闰年');}else{alert('您输入的年份是平年');}

if 语句的超级加强版 if else if(多分支语句)

语法结构

//适用于检查多重条件

if(条件表达式){

语句1;

}else if(条件表示式){

语句2;

}else if(条件表示式){

语句3;

……

}else{

//上述条件都不成立执行此代码

}

流程控制

代码示范

 //迷你计算器  : 输入两个数以及运算符号得出相应var yi = +prompt('请输入第一个数字'); //请用加减乘除隐式转换成数字类型,或者用                    praseInt(变量)或parsefloat(变量)整数和浮点数var fuhao = prompt('请输入运算符');var er = +prompt('请输入第二个数字');if (fuhao == '+') {var shu = yi + er;} else if (fuhao == '-') {var shu = yi - er;} else if (fuhao == '/') {var shu = yi / er;} else if (fuhao == '*') {var shu = yi * er;} else if (fuhao == '%') {var shu = yi % er;} else {alert('请按要求输入:');}alert(shu);

switch语句

switch语句也是多分支语句,它用于基于不同的条件;来执行不同的代码,当要针对变量设置一系列的特定值时选用switch

switch(表示式){

case value1:

//表达式等于value1时要执行的代码

break;

case value2:

//表达式等于value2时要执行的代码

break;

default:

//表达式不等于任意一个value时要执行的代码

}

流程控制

代码示范

     var fruit =prompt('请输入你要买的水果:');switch(fruit){case '苹果':alert('苹果的价格是:3.5/斤');break;case '荔枝':alert('荔枝的价格是:10.5/斤');break;default:alert('没有水果');}

注意

  • 我们在开发里表达式我们经常写成变量
  • 当fruit的值和case 里面的值匹配时必须是全等,也就是数据类型和值都必须一样
  • break 如果当前的case里面没有break 则不会退出switch 会继续执行下一个case

switch语句和if else if语句的区别

  1. 一般情况下,它们两个语句可以相互转换
  2. switch ……case 语句通常处理case为比较确定值的情况,而if ……else ……语句更加灵活,常用于范围判断(大于,等于某个范围)
  3. switch语句进行条件判断后直接执行到程序的条件语句,效率更高,而if ……else ……语句有几种条件,就得判断多次。
  4. 当分支比较少时,if……else……语句的执行效率比switch语句高
  5. 当分支比较多时,switch语句的执行效率比较高,而且结构更清晰

循环结构

循环的目的

在实际问题中,有许多具有规律性的重复操作,因此在程序中要执行这类操作就要重复执行某些语句

Js中的循环

在Js中,主要有三种类型的循环语句

  • for循环
  • while循环
  • do ……while循环

for循环

在程序中,一组被重复执行的语句被称为循环体,能否继续重复执行,取决于循环终止的条件,由循环体及

循环终止条件组成的语句,被称为循环语句

语法结构

for循环主要用于把某些代码重复若干次,通常跟计数有关。其语句结构如下

for(初始化变量;条件表达式;操作表达式){

//循环体

}

流程控制

代码示范

 for (var i=1;i<=10;i++){console.log('你喜欢我吗?');}//计算班级总成绩,以及平均分var num = prompt('请输入班级的总人数')var sum = 0,average = 0;for (var i = 1; i <= num; i++) {var score = prompt('请输入第' + i + '个学生的成绩')//从prompt取过来的数据是字符串需要转换成数字sum += parseInt(score);}average = sum / num;alert('班级的总成绩:' + sum);alert('班级的平均分:' + sum);
//一行打印5颗心for (var i=0;i<=4;i++){console.log('*');}

双层for循环(循环嵌套)

循环嵌套是指在一个循环语句里再定义一个循环语句的语法结构,例如在for循环里再嵌套一个for循环,这样的for循环语句我们称之为双层for循环

  1. 我们把里面的循环称之为内层循环,外面的 称之为外层循环
  2. 外层循环循环一次,内层循环从头到尾执行一遍

代码示范

 //低级:5行5列var str='';for  (var i=0;i<=4;i++){for (var j=0;j<=4;j++){str+='*';}str+='\n';}console.log(str);//高级:n行n列var rows = prompt('请输入行数:');var cols = prompt('请输入列数');var str='';for (var i = 1; i <= rows; i++) {for (var j = 1; j <= cols; j++) {str+='*';}str+='\n';}console.log(str);//打印倒三角型形var str='';for (var i=1;i<=10;i++){for (var j=i;j<=10;j++){str+='*';}str+='\n';}console.log(str);/*   1  ********** 10 2 *********93 ********84  *******75   ******66    *****57 ****48  ***39   **210   *1  */
//核心算法:var j=i;j<=10;j++
//思路:先分析结果,观察行与列关系。再确定内层循环的算法//打印正三角形,同上思路。var str='';for (var i=1;i<=9;i++){for (var j=1;j<=i;j++){str+='*';}str+='\n';}console.log(str);//打印九九乘法表,就是把正三角形的星号换成等式var str = '';for (var i = 1; i <= 9; i++) {for (var j = 1; j <= i; j++) {/* str+='*'; */str += i + '*' + i + '=' + i * j + ' \t';}str += '\n';}console.log(str);
//切记:外层循环循环一次,内层循环从头到尾执行一遍,只是打印图形的本质

for循环小结

  • for循环可以重复执行某些重复的代码
  • for循环可以超重复执行不同的代码,因为我们有计数器
  • for循环可以重复执行某些操作,比如算术运算加法操作
  • 双层for循环:外层循环循环一次,内层循环从头到尾执行一遍
  • for循环的循环条件是和数字直接相关的循环

while循环

while语句可以在条件表达式为真的前提下,循环执行指定的一段代码,直到表达式不满足条件时结束循环

while语句的语法结构

while(条件表达式){

//循环体语句;

}

执行思路:

  1. 先执行条件表达式,如果条件为true,则执行循环体代码,反之,则退出循环,执行后面的代码
  2. 执行循环体代码
  3. 循环体代码执行完毕后,程序会继续判断执行条件表达式,如果条件还是为true则继续执行循环体,直到循环条件为false时,整个循环体过程才会结束

流程控制图如下

代码示范

         var num=1; //初始化变量while(num<=10){//条件表达式console.log('Hello world');num++;//操作表达式}

注意:

  1. while里面也有操作表示式, 完成计数器的更新,防止死循环(我没加操作表达式,去运行代码结果谷歌浏览器界面黑了)
  2. 里面应该也有计数器初始化变量
  3. while循环在某种程度上可以与for循环等价,只需要把while里面初始化变量;条件表达式;操作表达式;放到for循环里就可以了

代码示范

         //打印人的一生,从1岁到120岁var age = 1;while (age <= 120) {console.log('这个人今年' + age + '岁了');age++;}//2.计算1~100之间的所有整数和var sum = 0,i = 1;while (i <= 100) {sum += i;i++;}console.log(sum); //3.单出一个对话框,你爱我吗?如果输入我爱你,就提示结束,否则一直询问var message='你爱我吗';while(message!=='我爱你'){message=prompt('你爱我吗?');}alert('我也爱你啊');

do ……while循环

do……while 语句其实就是while语句的一个变种,该循环会先执行一次代码块,然后对条件表达式进行判断,如果条件为真,就会重复执行循环体,否则退出循环

do……while语句的语法结构如下

do {

//循环体代码- 条件表达式为true时重复执行循环体代码

}

执行思路:

  1. 先执行一次循环体代码
  2. 再执行条件表达式,如果结果为true,则继续执行循环体代码,如果为false,则退出循环,继续执行后面的代码

注意:先执行循环体语句,再判断,我们就会发现do……while循环语句至少会执行一次循环体。

流程控制

代码示范

         //打印人的一生,从1岁到120岁var age = 1;do {console.log('这个人今年' + age + '岁了');age++;} while (age <= 120);//2.计算1~100之间的所有整数和var sum = 0,i = 1;do {sum += i;i++;} while (i <= 100)console.log(sum);//3.单出一个对话框,你爱我吗?如果输入我爱你,就提示结束,否则一直询问var message = '你爱我吗';do {message = prompt('你爱我吗?');} while (message !== '我爱你');alert('我也爱你啊');

循环小结

  • JS中循环有for,while,do……while
  • 三种循环很多情况下都可以相互交替使用
  • 如果是用来计次数,跟数字有关的,三者使用基本相同,更推荐使用for
  • while,do……while可以做更加复杂的判断条件,比for循环灵活一些
  • while和do…… while执行顺序不一样,while先判断后执行,do……while先执行一次,再判断执行
  • while和do…… while执行次数不一样,do……while至少会执行一次循环体,而while可能一次也不执行
  • 重点学习for循环语句,因为它写法更简洁

continue 和break

continue关键字用于立即跳出本次循环,继续下一次循环(本次循环体中continue之后的代码就会少执行一次)。

如:吃5个包子,第三个有虫子,就扔掉第三个,继续吃第四个第五个包子

代码示范

     for (var i = 1; i <= 5; i++) {if (i == 3) {continue;}console.log('我吃了第' + i + '个包子');}结果: //我吃了第1个包子//我吃了第2个包子//我吃了第4个包子//我吃了第5个包子

break关键字

break关键字用于立即跳出整个循环(循环结束)

如:吃五个包子,吃到第三个又发现了一条虫,就没胃口吃了。

代码示范

         for (var i = 1; i <= 5; i++) {if (i == 3) {break;}console.log('我吃了第' + i + '个包子');}结果;//我吃了第1个包子//我吃了第2个包子

命名规范及其语法

标识符命名规范

  • 变量,函数名必须有意义
  • 变量的名称一般用名词
  • 函数的名称一般用动词

单行注释规范

         for (var i = 1; i <= 5; i++) {if (i == 3) {continue; //单行注释前面 注意前面有个空格}console.log('我吃了第' + i + '个包子');}

操作符规范

//操作符的左右两侧各保留一个空格for (var i = 1; i <= 5; i++) {if (i == 3) {break;}console.log('我吃了第' + i + '个包子');}

结束语

认定了的路,再痛也不要皱一下眉头,你要知道,再怎么难走都是你自己选的,你没有资格喊疼。

史上最强Js流程控制三大结构相关推荐

  1. 谷歌发布史上“最强大脑”——可以控制和操作机器人的AI模型

    ​谷歌发布了一款被誉为史上"最强大脑"的人工智能模型PaLM-E (Parameter-efficient Language Model with Explicit Memory) ...

  2. node.js 腾讯镜像站_史上最强Sx05RE游戏整合镜像发布!FBA4ARM永久闭源并停止发布!...

    先来说第一件事. 经过两个多星期的编程和整合,史上最强Sx05RE游戏整合镜像终于发布了!此次的整合镜像在官方Sx05RE 2.3.1的基础上,添加了独立NDS模拟器Drasitc以及独立程序Open ...

  3. 刚刚,史上最强Apollo3.5在CES发布!暗藏百度无人驾驶7大黑科技武器

    雷刚 发自 凹非寺  量子位 报道 | 公众号 QbitAI Wow,wow,wow~ 2019CES大展已开幕,1月8日的Westgate酒店宴会厅现场,感叹声此起彼伏. 这是在百度Apollo C ...

  4. 史上最强Vue,面试、项目全靠它

    史上最强Vue,面试.项目全靠它 vue框架篇 vue的优点 数据驱动的理解 MVVM的理解 组件化的理解 1.组件定义 2.组件的使用场景 3.如何使用组件 4.vue组件产生的过程 数据闪烁 请详 ...

  5. JVM面试题(史上最强、持续更新、吐血推荐)

    JVM面试题(史上最强.持续更新.吐血推荐) 文章很长,建议收藏起来慢慢读!疯狂创客圈总目录 语雀版 | 总目录 码云版| 总目录 博客园版 为您奉上珍贵的学习资源 : <尼恩Java面试宝典& ...

  6. “史上最强”BigGAN公开TensorFlow Hub demo!

    还记得前些日子轰动一时的 BigGAN 模型吗?生成对抗网络(GAN)作为当前最热门的技术之一,最近在图像生成方面的成果颇受人关注.近日,由 DeepMind 和赫瑞瓦特大学组成的科研人员公布的 Bi ...

  7. 【学术前沿】26 亿参数训练量,水平接近人类,Google 开发的“史上最强”聊天机器人意义何在?...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 来源:雷锋网 科技巨头们时不时就声明在 AI 领域取得了突破性进展,对此我们已经见 ...

  8. 【插件】史上最强编辑器通用ctags插件OpenCTags使用指南v1.2--开发者必备

    Changes Log: v1.2.0 2011-12-4 支持Java编写的可以设置用户配置的编辑工具 增加当前文件类查找Tags功能 增加设置当前目录参数 完善多种主流轻量级编辑器的配置 v1.1 ...

  9. 【整理】史上最强的娱乐大餐———九奔、汉澳、器普。。。。。。

    按: 本文内容来源于:http://shouji88.com/msg_list.cgi?bbs_id=000001                               http://shouj ...

最新文章

  1. 你有哪些 Deep learning(RNN、CNN)调参的经验?
  2. golang中的闭包
  3. k8s pod和service的关系及常用service类型:ClusterIP/NodePort/LoadBalancer
  4. mysql timestamp 插入null报错_读MySQL 5.7文档11.2 Date and Time Data Types总结
  5. 利用mm命令编译Android模块
  6. .net ListT
  7. 力扣498. 对角线遍历
  8. LeetCode 1379. 找出克隆二叉树中的相同节点(二叉树遍历)
  9. 树形结构递归初始化(父节点,统计字段等)
  10. python pip有什么用_pip的介绍和使用
  11. java 图形化编程_JavaSE——Java图形化编程
  12. Oracle终极彻底卸载的完整步骤
  13. 漏型与源型、PNP与NPN
  14. 使用不同的TCP端口架设多个网站
  15. php date函数时间不对,PHP Date / Time 日期和时间 函数和时间相差8小时解决办法
  16. Android音频——音量调节
  17. licode服务器处理流程
  18. 电脑常识某企业桌面虚拟化项目-Citrix虚拟桌面解决方案
  19. 论文笔记《Are You Talking to Me? Reasoned Visual Dialog Generation through Adversarial Learning》
  20. 编码器(rotary encoder)工作原理

热门文章

  1. android wifi智能硬件4g,智能硬件 篇五:把WiFi带在身上,告别宽带!华为随行WiFi2畅享版真实体验...
  2. 2022-2028年全球与中国化学抑尘剂行业市场深度调研及投资预测分析
  3. win10如何关机时显示停止服务器,Win10系统关机时总提示此应用程序阻止关机如何解决...
  4. 学术规范与论文写作(期末考试答案)(方便检索版)
  5. 白话斯坦福机器学习课程-CS229 - 监督学习应用:梯度下降
  6. 在微信小游戏中使用tensorflow的face-landmarks-detection
  7. guzzle/guzzle 日常使用
  8. Dynamic Web Module 3.1 requires Java 1.7 or newer. 错误解决方案
  9. python获取元素在数组中的位置
  10. Impala: Reducing query concurrency or configuring admission control may help avoid this error