第2记:流程控制语句篇
程序员文章站
2022-06-02 20:09:30
...
文章目录
一、分支结构
1、 if…else
简单例子:判断是否闰年
let year = prompt('请输入年份')
if (year % 4 == 0 && year % 100 == 0 || year % 400 == 0) {
alert('是闰年')
} else {
alert('不是闰年')
}
2、 switch…case
1. switch 语句也是多分支语句也可以实现多选1
2.语法结构switch转换、开关case小例子或者选项的意思
3.执行思路:利用我们的表达式的值和 case 后面的选项值相匹配如果匹配上,就执行该case里面的语句如果都没有匹配上,那么执行default里面的语句
switch(表达式){
case value1:
执行语句1;
break;
case value2:
执行语句2;
break;
default:
执行最后的语句;
}
switch 穿透
//switch 穿透
let letter = prompt('请输入字母:')
switch (letter) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
alert("元音")
break;
case 'y':
case 'w':
alert("半元音")
break;
default:
alert("辅音")
}
二、break 和 continue
1. break关键字
break 关键字用于立即跳出整个循环(循环结束)。
例如,吃5个包子,吃到第3个发现里面有半个虫子,其余的不吃了
for (let i = 1; i <= 5; i++) {
if (i == 3) {
break; // 只要遇见 contihue就退出本次循环直接跳到i++
}
console.log(i);
}
//输出: 1 2
2. continue关键字
continue关键字用于立即跳出本次循环,继续下一次循环(本次循环体中continue之后的代码就会少执行一次)。
例如,吃5个包子,第3个有虫子,就扔掉第3个,继续吃第4个第5个包子,
其代码实现如下∶
// continue关键字
for (let i = 1; i <= 5; i++) {
if (i == 3) {
continue; // 只要遇见 contihue就退出本次循环直接跳到i++
}
console.log(i);
}
//输出: 1 2 4 5
再来一个例子:求1~100 之间,除了能被7整除之外的整数和
let sum = 0
for (let i = 1; i <= 100; i++) {
if (i % 7 == 0) continue //能被7整除就跳出本次(不执行下面了),继续下一次循环
sum += i
}
console.log(sum)
三、循环
1、for 循环
for (let i = 1; i <= 5; i++) {
console.log(i);
}
//1 2 3 4 5
双重for循坏,外层循环一次,内层for循环全部执行
//九九乘法表:
//外层的for循环控制行数i ,循环9次,可以打印9行
//内层的 for循环控制每行公式j
//核心算法:每一行公式的个数正好和行数一致,j<= i;1
//每行打印完毕,都需要重新换一行
let str = ''
for (let i = 1; i <= 9; i++) {
for (let j = 1; j <= i; j++) {
str += `${i} x ${j} = ${i * j} \t`
}
str += '\n'
}
console.log(str)
2、for…in / for…of 循环
1、从遍历数组和字符串角度来说,for···in遍历出来的是key(即下标),for···of遍历出来的是value(即数组的值)
let arr = [996, 886, 666];
//for···in遍历出来的是key(即下标)
for (let i in arr) {
console.log(i); //0,1,2
}
//for···of遍历出来的是value(即数组的值)
for (let i of arr) {
console.log(i); //996,886,666
}
2、从遍历对象的角度来说,for···in会遍历出来的为对象的key,但for···of会直接报错。
var obj = { name: "Bob", age: 25 };
for (var i in obj) {
console.log(i) // name age
}
for (var i of obj) {
console.log(i) //报错 obj is not iterable
}
如果要使用for…of遍历普通对象,需要配合Object.keys()一起使用。
var person={
name:'coco',
age:22,
locate:{
country:'China',
city:'beijing',
}
}
//使用Object.keys()方法获取对象key的数组
for(var key of Object.keys(person)){
console.log(key+": "+person[key]);
//name: coco,
//age: 22,
//locate: [object Object]
}
3、while 循环
while (条件表达式) {
循环体
}
执行思路: 当条件表达式结果为true,则执行循环体,否则退出循环
let num = 1
while (num <= 5) {
console.log(num)
num++
}
//1 2 3 4 5
//没有num++ ,就进入死循环了
4、do while 循环
do… while语句其实是while语句的一个变体。
该循环会先执行一次代码块,然后对条件表达式进行判断,如果条件为真,就会重复执行循环体,否则退出循环
let num = 1
do {
console.log(num)
num++
} while (num <= 5)
// 1 2 3 4 5
执行思路:
1、先执行一次循环体代码
2、再执行条件表达式,如果结果为true,则继续执行循环体代码,如果为false,则退出循环,继续执行后面代码
注意∶先再执行循环体,再判断,我们会发现do…while循环语句至少会执行一次循环体代码