Javascript:流程控制
文章目录
- 代码块
- 流程控制语句
- 循环
- while循环
- do-while循环
- for循环
代码块
简介:程序是由一条一条语句构成,语句是按照自上向下的顺序一条一条执行的。在JS中可以使用{}来为语句分组
同一个{}中的语句我们称为是一组语句,它们要么都执行,要么都不执行使用:JS中的代码块,只具有分组的作用,没有其他的用途。代码块里面的内容,在外部是完全可见的。
在ES6中,代码块中的代码是独立于外部代码的,内部定义的变量外部无法使用。在ES5中,代码块内部定义的代码是可以被外部访问的。
{var name = "凯";console.log("kai");document.write("123"); } console.log("name = " + name);
在ES5中,运行结果为
{let str = "凯";console.log("kai");document.write("123");}console.log("name = " + str);
在ES6中,运行结果为
流程控制语句
基本概念:默认情况下,程序的运行流程是这样的:运行程序后,系统会按照书写从上至下顺序执行程序中的每一行代码,但是这并不能满足我们所有的开发要求。
实际开发中,我们需要根据不同条件之行不同代码或者重复执行某一段代码。
为了方便我们控制程序的运行流程,JavaScript提供3种流程控制,不同的流程结构可以实现不同的运行流程。这三种流程结构分别是顺序、选择、循环三中基本控制结构构造。
① 顺序结构:默认的流程结构,按照书写顺序从上至下执行每一条语句。
② 选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码。
③ 循环结构:在给定条件成立的情况下,反复执行某一段代码。if
① 如果条件表达式为真,执行语句块1,否则不执行。if (条件表达式){语句块1 } 后续语句
② 如果条件表达式为真,执行语句块1,否则执行语句块2.
if (条件表达式1){语句块1}else{语句块2}
③ 如果条件表达式1为真,则执行语句快1,否则判断条件表达式2,如果为真执行语句块2,否则再判断条件表达式3,如果为真执行语句块3,当表达式1、2、3都不满足,执行最后一个else
if (条件表达式1){语句块1 } else if (条件表达式2){语句块2 } else if (条件表达式3){语句块3 } else{语句块4 }
④注意:
Ⅰ.如果只有一条语句时if后面的大括号可以省略
Ⅱ.分号";"也是一条语句,空语句
Ⅲ.if else是一个整体,else匹配if的时候匹配离它最近的一个if
Ⅳ.对于非Boolean类型的值,会先转换为Boolean类型后再判断
Ⅴ.判断变量与字面量问题:但凡遇到比较一个变量是否等于某一个字面量的时候,把字面量写在前面
Ⅵ.if语句可以嵌套使用
⑤ 练习:石头剪刀布//石头剪刀布 // 0-剪刀 1-石头 2-布// 1. 定义变量 var player, computer; // 2. 电脑出拳 Math.random会随机产生0-1的一个数字 computer = parseInt(Math.random()*3); // 3. 玩家出拳 player = parseInt(+(window.prompt("请出拳。0-剪刀 1-石头 2-布"))); console.log(player); // 4. 用户输入内容判断 if (player < 0 || player >2){// 不满足条件alert("输入错误!请重新出拳")player = parseInt(+(window.prompt("请出拳。0-剪刀 1-石头 2-布"))); } else{//满足条件if((player===0 && computer===2) || (player===1 && computer===0) || (player===2 && computer===1)){alert("恭喜你,赢了!")}else if((player===0 && computer===1) || (player===1 && computer===2) || (player===2 && computer===0)){alert("很遗憾,输了");}else{alert("平局");} }
switch
① 简介 switch和if一眼都属于选择结构,都会对给定的条件进行判断,再根据判断结果来决定执行哪一段代码。
② 基本格式switch (条件表达式) {case 表达式1:语句1;break;case 表达式2:语句2;break;···case 表达式n:语句n;break;default:语句n+1;break;}
③ 含义
计算表达式的值,并逐个与case后面表达式的结果进行比较
当条件表达式的值与某个表达式的值全等时,执行其后面语句,并且不会再与其他case比较
如果条件表达式的值与所有case后的表达式均不相等时,则执行default后的语句
④ 示例var num=3;switch (num) {case 1:console.log("壹");break;case 2:console.log("贰");break;case 3:console.log("叁");break;default:console.log("其他");break;}
⑤ 注意事项
Ⅰ.case全等于问题
JavaScript中case判断是否相等时是全等于(===),而不是等于( ==)。也就是说既会判断类型是否相等又会判断值是否相等。
case后可以是字面量也可以是变量。
Ⅱ.表达式判断问题
判断时会先计算表达式的值,再判断。
Ⅲ.case 的穿透问题
switch里面的case只要匹配一次其它的都会失效,包括default。
在case语句最后增加break语句,使每一次执行之后均可跳出switch语句,从而避免输出不应有的结果。
Ⅳ.default的位置问题
default可以省略。
default语句可以写在switch语句中的任意位置。⑥ if语句和switch语句转换
案例:用户输入一个分数,根据分数输出对应等级// 要求用户输入一个分数,根据输入的分数输出对应的等级 // A 90~100 // B 80~89 // C 70~79 // D 60~69 // E 0~59 var grade; grade = window.prompt("请输入分数:"); // if实现 // if (grade>89 && grade<=100) // console.log("A"); // else if (grade>79) // console.log("B"); // else if (grade>69) // console.log("C"); // else if (grade>59) // console.log("D"); // else if (grade>-1) // console.log("E"); // else // console.log("×××");// switch实现 switch (parseInt(grade/10)) {case 10:case 9:alert("A");break;case 8:alert("B");break;case 7:alert("C");break;case 6:alert("D");break;default:alert("E");break; }
⑦ if语句和switch语句选择
Ⅰ. 分支比较多且无法穷尽时最好用if,其他情况视情况而定
Ⅱ. 如果数据量不是很大,并且数据是固定的可以用switch
Ⅲ. 理论上switch效率比if高
Ⅳ.switch弊端:数据量大、无法穷尽时不要用switch
循环
- 循环结构时程序中一种很重要的结构,其特点是:在给定条件成立时,反复执行某程序段,直到条件不成立为止。
- 给定的条件称为循环条件,反复执行的程序成为循环体
- 循环结构简单来说就是:一次又一次执行相同代码
- JS中循环:while语句、do-while语句、for语句
while循环
- 格式
while(条件表达式){语句1;语句2;··· }
- 执行流程
判断条件表达式是否为真,如果为真执行后面代码块
执行完毕后再次判断条件表达式是否为真,如果为真执行后面代码块
重复上述过程,知道条件不成立结束while循环 - 构成循环结构几个条件
① 循环控制条件(条件表达式)
循环退出的主要依据,来控制循环到底什么时候退出
② 循环体(while后面的大括号{}0)
循环的过程中重复执行的代码
③ 循环结束语句(递增,递减,break等)
能够让循环条件为假的依据,否则退出循环 - while循环特点
如果while中的条件一开始就不成立,那么循环体中的语句永远不会被执行 - while循环注意点
① 死循环 条件表达式永远为真,循环永远无法结束
② 任何值都有真假性 对于非Boolean类型的值,会先转换为Boolean类型后再判断
③ while后面如果只有一条语句,可以省略大括号
④ 分号问题 分号(;)也是一条语句,代表空语句
⑤ 最简单的死循环 - break关键字
① 跳出switch语句、跳出循环语句
② 注意
break关键字只能用于循环语句和switch语句,在其他地方没有意义
在多层循环中,一个break语句只能向外跳一层
break后面的语句永远不会被执行 - continue关键字
① 跳出当前循环提中剩余的语句而继续执行下一次
② 注意
do-while循环
- 格式
do{语句1;语句2;··· }while(条件);
- 执行流程
首先会执行一次循环体中的语句
接着判断while中的条件表达式是否为真,如果为真再次执行循环体中的语句
重复上述操作,知道条件不成立结束while循环 - 特点
不管while中的条件是否成立,循环体中的语句至少被执行一遍
for循环
- 概述
JavaScript中for语句使用最为灵活,不仅可以用于循环次数确定的情况,也可用于循环次数不确定只给出循环结束条件的情况,完全可以代替while语句。 - 格式
for(①初始化表达式;②循环条件表达式;④循环后操作表达式) {③执行语句 }
- for循环执行流程
for循环开始时,会先执行初始化表达式,而且在整个循环过程中只执行一次初始化表达式
接着判断循环条件表达式是否为真,如果条件为真,就会执行循环体中的代码
循环体执行完毕后,接下来会执行循环后的操作表达式
执行完循环后操作表达式,然后再次判断循环条件表达式是否为真,如果条件为真,就会执行循环体中的语句
重复上述过程,直到条件不成立就结束for循环 - for循环和while循环如何选择
一般情况下while和for可以互换,但是如果循环执行完毕后不需要使用用于控制循环的增量,用for更好 - 注意点
for循环初始化表达式,循环条件表达式,循环后操作表达式都可以不写
循环条件表达式默认为真
for(;;)语句相当于while(1),都是死循环
其它注意点和while一样
Javascript:流程控制相关推荐
- JavaScript流程控制-循环(循环(for 循环,双重 for 循环,while 循环,do while 循环,continue break))
目录 JavaScript流程控制-循环 循环 for 循环 执行过程: 断点调试: 案例一:求1-100之间所有整数的累加和 案例二:求1-100之间所有数的平均值 案例三:求1-100之间所有偶数 ...
- web前端学习584-610(JavaScript流程控制-循环---for循环 while循环 do...while循环 continue break)
文章目录 JavaScript流程控制-循环 1 循环 2 for 循环 案例1:求1-100之间所有的整数的累加和 案例2:求学生成绩 案例3:一行打印五个星星 3 双重for 循环 案例:打印五行 ...
- JavaScript(二)—— JavaScript 运算符/JavaScript 流程控制/JavaScript 数组
本篇为 JavaScript 系列笔记第二篇,将陆续更新 文章目录 一.运算符 1. 算术运算符 2. 递增和递减运算符 3. 比较运算符 4. 逻辑运算符 短路运算(逻辑中断) 5. 赋值运算符 6 ...
- javaScript 流程控制
流程控制 控制流程走向 一:顺序流程 二:选择流程 1:单分支if () 语法结构 if (条件) { 执行块 } //条件为真,运行执行块.条件为假,不做其他操作 2:多分支 if(条件) { 执行 ...
- JavaScript流程控制-分支结构
流程控制主要有三种结构,分别是顺序结构,分支结构. 1 .if语句 if语句的结构: if(表达式){ 执行语句 } if语句的执行思路 如果if的条件表达式为真 true,则 ...
- JavaScript流程控制
目录 一.什么是流程控制 二.顺序结构 三.分支结构--if语句 1.if语句 1.1语法结构 1.2执行思路 1.3案例:进入网吧 2.if-else双分支语句 2.1语法结构 2.2执行思路 ...
- JavaScript流程控制之分支结构
if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码 if-else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码 if-else if-else 语 ...
- JavaScript流程控制,带你打印九九乘法表
- JavaScript入门(part7)--流程控制
学习笔记,仅供参考,有错必纠 参考自:pink老师教案 文章目录 JavaScript入门 流程控制 流程控制概念 顺序流程控制 分支流程控制 三元表达式 switch分支流程控制 for循环 双重f ...
- python给js变量赋值_python 之 前端开发( JavaScript变量、数据类型、内置对象、运算符、流程控制、函数)...
11.4 JavaScript 11.41 变量 1.声明变量的语法 //1. 先声明后定义 var name; //声明变量时无需指定类型,变量name可以接受任意类型 name= "eg ...
最新文章
- TensorRT Samples: CharRNN
- 大型网站系统架构演化之路(转)
- python读数据-python读取各种文件数据方法解析
- 湖北省政府网站刊文:感染新冠肺炎的适龄男性应进行生育力检查
- 推荐系统笔记:使用分类模型进行协同过滤
- 【机器学习】支持向量机面试知识点小结
- 有研究irrlicht引擎的吗,交流交流
- 一个简单的pwn例子---read函数
- 柏林噪声双线性插值初步了解(js)
- FPGA学习(第8节)-Verilog设计电路的时序要点及时序仿真
- 全网最全console命令解析总结
- GitHub使用教程
- 【转】平时看到的比较好的一篇文章,送给通信专业的学生
- Python爬虫:数据提取
- [请您去投票]ESRI中国社区2008年度优秀会员评选
- 【读书笔记】《人性的弱点》——卡耐基
- NLP模型(二)——GloVe介绍
- 计算机网络手写笔记图片,一键收藏!清华学子这样记笔记!
- 男人应享有动听词汇的权利
- cpar文件的导入导出及注意事项
热门文章
- 9.1 Zend_Json
- 10. CSS 文本
- css3中transform-style的用法
- js中的onscroll的用法
- Linux命令(五)之service服务查找、启动/停止等相关操作
- 利用jmeter做一个简单的性能测试并进行参数化设置
- 使用JavaScript分别实现4种样式的九九乘法表(1X1分别在左上、左下、右上、右下)...
- idea创建Maven项目后启动报404
- Spring pom配置详解(转)
- apache2配置rewrite_module