part02 流程控制语句
三种结构:
- 顺序结构
- 分支结构
- 循环结构
一、顺序结构
依次从上往下执行就叫顺序结构
二、分支结构
可以让我们有选择性的执行想要的代码,包含
- if分支语句
- 三元运算符
- Switch case语句
1、if语句
- 单分支
if(条件){
满足条件要执行的代码
}
➢ 括号内的条件为true时,进入大括号里执行代码
➢ 小括号内的结果若不是布尔类型时,会发生隐式转换转为布尔类型
➢ 如果大括号只有一个语句,大括号可以省略,但是,俺们不提倡这么做~
- 双分支
if(条件){
满足条件要执行的代码
}
else{
不满足条件执行的代码
}
- 多分支
if(条件1){
满足条件要执行的代码1
}else if(条件2){
满足条件要执行的代码2
}else if(条件3){
满足条件执行的代码3
}else{
不满足条件执行的代码n
}
- 判断闰年案例
let year = prompt("输入查询的年份")
if((year%4===0&&year%100!==0)||year%400===0){
alert(`${year}年是闰年`)
}
else{
alert(`${year}年是平年`)
}
2、三元运算符
使用场景: 其实是比 if 双分支 更简单的写法,可以使用 三元表达式
- 符号:? 与 : 配合使用
- 语法:
条件?满足条件执行的代码:不满足条件执行的代码
- 一般用来取值
let a = +prompt('请输入你的第一个值')
let b = +prompt('请输入你的第二个值')
// if(判断条件){}else{}
// if (a > b) {
// alert(a)
// } else {
// alert(b)
// }
// 三元一次表达式的写法
// 语法:判断条件 ? 返回满足条件的代码 : 返回不满足条件的代码;
// a > b ? alert(a) : alert(b)
// 表达式是用来计算求值的,一般都会有一个结果产生
// a,b默认是字符串类型 ,字符串比较的ASCII码,a的码是97
let val = a > b ? a : b // 1 > 2 ? 结果1 : 结果2
console.log(val);
- 数字补0案例—用户输入1个数,如果数字小于10,则前面进行补0, 比如 09 03 等
let num = +prompt('请输入一个数字')
let val = num < 10 ? '0' + num : num
console.log(val);
3、switch 语句
switch(数据){
case 值1:
代码1
break
case 值2:
代码1
break
case 值3:
代码1
break
default:
代码n
break
}
释义:
➢ 找到跟小括号里数据全等的case值,并执行里面对应的代码
➢ 若没有全等 === 的则执行default里的代码
➢ 例:数据若跟值2全等,则执行代码2
注意:
1. case的值要和固定数据类型保持一致
2. case里面的值和固定数据,是进行全等比较,比较的是值和类型
3. break不能删除,不然会造成穿透效果,效果是终止你的代码运行
4. default和break关键字是可以省略的,因为他是最后一项
- 简单计算器
let num1 = +prompt('请输入第一个值')
let num2 = +prompt('请输入第二个值')
let cz = prompt('请输入:+,-,*,/其中任意一个')
switch (cz) {
case '+':
alert(num1 + num2)
break
case '-':
alert(num1 - num2)
break
case '*':
alert(num1 * num2)
break
case '/':
alert(num1 / num2)
break
// 特殊情况:用户如果没有输入+,-,*,/,提示用户输入
default:
alert('输入错误,请输入+,-,*,/其中一个')
}
三、循环语句
1、while语句
while(循环条件){
要重复执行的代码(循环体)
}
释义:
➢ 跟if语句很像,都要满足小括号里的条件为true才会进入 循环体 执行代码
➢ while大括号里代码执行完毕后不会跳出,而是继续回到小括号里判断条件是否满足,若满足又执行大括号里的代码,然后再回到
小括号判断条件,直到括号内条件不满足,即跳出
循环的本质就是以某个变量为起始值,然后不断产生变化量,慢慢靠近终止条件的过程。
所以,while循环需要具备三要素:
- 循环变量初始化
- 循环条件(判断条件是否成立,成立执行循环体代码,不成立,循环结束)
- 变量更新(用自增或者自减
2、for 语句
for(变量的起始值;循环的终止条件;变量的变化量){
循环体
}
- 打印小星星案例
//页面中打印5个小星星
for (let i = 1; i <= 5; i++) {
document.write('★')
}
3、双重循环
// 双重for循环 外层循环一次 里层循环多次
// 外层控制天数 3次
for (let i = 1; i <= 3; i++) {
document.write(`这是第${i}天<br>`);
for (let j = 1; j <= 5; j++) {
document.write(`这是第${j}个单词 <br>`);
}
}
// 里层循环控制单词数量 5次
//一共有3*5次=15次循环
- 九九乘法表
// 分析: 1. 外层for循环控制行数 9行
for (let i = 1; i <= 9; i++) {
// 2. 里层for循环控制列数 列数=行数 1=1 2=2...9=9
for (let j = 1; j <= i; j++) {
// 打印的代码 1*1=1
document.write(`<span>${j}X${i}=${i * j}</span>`)
}
document.write('<br>')
}
break & continue
- break 在循环使用,退出循环,break执行完毕之后break关键字后面是不执行
- continue 跳过本次循环, continue后面的代码不执行,继续下一次循环
js精确度
- 当小数之间进行运算时会出现问题,如
console.log(0.1 + 0.2);//0.3
console.log(0.1 + 0.2 === 0.3);//false
- 解决的方式:
console.log((0.1 * 10 + 0.2 * 10) / 10 === 0.3);//true