JS-JS基础-2
流程控制-分支结构
在一个程序执行的过程中, 各条代码顺序对程序的结果是有直接影响的. 很多时候我们要通过控制代码的执行顺序来实现我们要完成的功能.
顺序流程控制
按顺序写就行
分支流程控制语句
if类语句
if语句
语法结构
if (条件表达式) { |
执行思路—if的条件表达式结果:
true 执行里面的 执行语句
false 跳过此处的if语句 / 执行if语句后面的代码
if else语句
如果表达式为真 则执行语句1 否则执行else里面的语句2
var age = prompt('请输入你的年龄'); |
注意: else后面直接跟大括号
案例: 判断闰年 平年
算法: 能被4整除且不能整除100的为闰年(2004年是闰年, 1901年不是闰年) 或者能够被400整除的就是闰年
实施
var year = prompt('请输入年份'); |
注意:
且 && 或者 || 的写法
同时注意判断整除的方法 取余为0
三元表达式(简化版的if else)
由三元运算符组成的式子称为三元表达式
语法结构:
条件表达式? 表达式1 : 表达式2 ;
执行思路:
如果条件表达式为真 则返回表达式1的值, 如果条件表达式结果为假, 则返回表达式2的值
代码体验:
var num = 3; |
练习: 数字补0
要求:用户输入数字, 如果数字小于10, 则在前面补0, 比如01, 09, 如果数字大于10, 则不需要补, 比如20
分析:
用户输入0-59之间的一个数字
如果数字小于10, 则在这个数字前面补0, (加0), 否则不做操作
用一个变量接收这个返回值, 输出
实施:
var time = prompt('请你输入一个0~59之间的数字:'); |
if else if语句(多分支语句)
语法规范:
if (条件表达式1) { |
作用: 适合检查多重条件
注意:
多分支语句还是多选一, 最后只能有一个语句执行
else if 中间有空格
案例: 接受用户输入分数, 根据分数输出对应的等级字母A B C D E;
其中 :
| score>=90 | A |
| 80<=score<90 | B |
| 70<=score<80 | C |
| 60<=score<70 | D |
| score<60 | E |
思路:
按照从大到小判断的思路
弹出prompt输入框, 让用户输入分数, 把这个值取过来保存到变量当中
使用多分支if else语句来分别判断输出不同的值
实施:
var score = prompt('请输入你的分数'); |
switch语句
switch语句也是多分支语句, 它用于基于不同的条件来执行不同的代码. 当要针对变量设置一系列的特定值的选项时, 就可以使用switch
所以:
判断特定值 用switch更好做
判断值范围的 用if else 更好做一些
语法结构: switch 转换, 开关 ; case小例子或者选项的意思
switch(表达式) { |
执行思路:
利用表达式的值 与 case 后面的值相匹配 匹配就执行case里面的语句 不匹配就往下走;
都没有匹配上就执行default里面的语句.
实例:
switch (2) { |
var num = 3; |
注意事项:
开发里面 表达式经常写成变量
我们num的值 与case里面的值相匹配的时候是 全等 必须是值和数据类型一致才可以 num === 1;
**break是必要性: ** 如果当前case没有break, 则不会退出switch 而是会再继续多执行一个下面的case
案例: 查询水果的价格
要求:
用户在弹出框里面输入一个水果, 如果有就弹出该水果价格, 如果没有该水果就弹出”没有此水果.”
分析:
- 弹出警示框 用户输入 将值存入变量
- switch括号里面的表达式
- case后面的值写几个不同的水果名称 要加引号, 因为必须全等匹配.
实施:
var fruit = prompt('你的水果是:🍎/榴莲/🍌'); |
水果 记得加引号
switch语句与if else if语句的区别
- 一般情况下, 他们两个语句可以相互替换
- switch ,case语句同行处理case为比较确定值的情况, 而if,,,else,,语句更加灵活, 常用于范围判断(大于, 等于某个范围)
- switch语句进行条件判断后直接执行到程序的条件语句, 效率高; 而if else 语句有几种条件, 就得判断多少次
- 当分支较少时, if else语句的只想效率比switch语句高
- 当分支多时, switch语句的执行效率比较高, 而且结构更清晰
作业之一
var weekday = prompt('请输入数字1-7中的任意一个整数字'); |
循环流程控制语句
for循环
语法:
for(初始化变量;条件表达式;操作表达式){ |
初始化变量
就是用var声明的一个普通变量, 通常用于作为计数器使用
条件表达式
用来决定每一次循环是否继续执行 不满足条件则退出循环
操作表达式
每次循环最后执行的代码, 经常用于我们计数器变量进行更新(递增或者递减)
代码体验:
for (var i = 1; i <= 1000; i++) { console.log('你好吗'); }
断点调试
执行相同的代码:
var num = prompt('请输入次数') |
执行不同的代码: 计数器的作用
for (var i = 1; i <= 100; i++) { |
for (var i = 1; i <= 100; i++) { |
重复某些相同的操作:
案例: 求1-100之间所有整数的累加和
分析:
需要将储存结果的变量sum, 初始值是0
sum=sum+i
var sum = 0; //求和的变量 |
案例: 求1-100之间所有能被3整除的数字的和
var result = 0; |
案例: 用户输入班级人数, 之后依次输入每个学生的成绩, 最后打印出该班级总的成绩以及班级成绩
分析:
输入总人数
一次输入学生的成绩(用score保存起来), 此时我么你需要用到for循环, 弹出的次数跟班级人数有关系, 关系表达式 i<= num
进行业务处理: 计算成绩.
先求总成绩(sum), 之后求平均成绩(average)
弹出结果
var num = prompt('请输入班级的总人数'); |
案例: 写一行5个星星
<div></div> |
任意个数的星星
<div></div> |
双重for循环
语法结构:
for (外层的初始化变量; 外层的条件表达式;外层的操作表达式) { |
我们可以把里面的循环看作外层循环的语句
外面的循环循环一次, 里面的循环 执行全部
代码验证:
for (var i= 1; i<= 3; i++) { |
案例:打印五行五列的星星
思路:
内层循环负责一行打印5个星星
外层循环负责打印五行
实施:
var str = ''; //定义一个字符串型的变量来储存星星 |
案例:打印倒三角形
var str = ''; |
作业:打印正三角形
var str = ''; |
打印九九乘法表
分析
- 一共9行, 但是每行的个数不一样, 因此需要用到双重for循环
- 外层的for循环控制行数i, 循环9次, 可以打印9行
- 内层的for循环控制每行公式j
- 核心算法:每一行 公式的个数正好和行数一致, j<=i
实施
for (var i = 1; i <= 9; i++) { |
小结
- for循环可以重复执行某些相同的代码
- 循环可以执行写于不同的代码, 因为我们有计数器
- for循环可以重复执行某些操作, 比如算术运算父加法操作
- 随着需求增加, 双重for循环可以做更多,更好看的效果
- 双重for循环, 外层循环一次, 内层循环全部执行
- for循环是循环条件和数字直接相关的循环
- 分析要比写代码更重要
- 一些核心算法想不到, 但是要学会, 分析执行过程
- 举一反三, 经常总结,, 做一些相似的案例
while循环
应用环境:
当条件较为复杂是 使用while
比for更加灵活
语法结构:
while (条件表达式) { |
执行思路:
当条件表达式结果为true的时候 , 则执行循环体, 否则退出循环
代码验证:
var num =1; |
注意:
应该初始化变量
while循环里面应该也有计数器,
完成计数器的更新, 防止死循环
案例:
要求
弹出一个提示框 你爱我吗? 如果输入我爱你, 就提示结束, 否则一直询问;
分析
弹出输入框, 判断条件比较复杂 我们使用while
实施
var message= prompt('你爱我吗?'); |
do…while循环
语法:
do { |
执行思路:
跟while不同的地方在于 do while先执行循环体, 再判断条件.
如果条件表达式为真, 则继续执行循环体, 否则退出循环.
代码体验
var i = 1; |
注意:
我们的do while循环体至少循环一次
循环小结
- js中循环有for while do while
- 三个循环很多情况下可以相互代替
- 如果是用来计数, 跟数字相关, 三者使用基本相同, 但是我们更喜欢用for
- while和do..while执可以做更复杂的条件判断, 比for循环灵活一些
- while和do while执行顺序不一样, while先判断后执行, do…while先执行一次, 再判断执行
- while和do…while执行次数, do…while至少会执行一次循环体, 而while可能一次也不执行
continue和break关键字
continue
用于立即跳出本次循环, 继续下一次循环(本次循环体中continue之后的代码就会少执行一次)
继续执行剩余次数的循环
代码:
for (var i = 1; i<=5; i++) { |
案例:
求1-100之间 除了能被7整除之外的整数和
for (var i = 1; i <= 100; i++) { |
break
退出整个循环
案例:
吃到第三个包子时 发现有虫子, 不再吃包子了
for (var i=1; i<=5; i++) { |
JS命名规范以及语法格式
标识符命名规范
- 变量, 函数的命名必须有意义
- 变量用名词
- 函数的名称用动词
操作符规范
操作符左右两侧保留一个空格
单行注释规范
单行注释//
其他规范
…