switch 结构
完整结构
switch (表达式) {
case 值: 语句;
break;
case 值: 语句;
break;
case 值: 语句;
break;
default:语句;
break
}
执行过程
1 先计算表达式值
2 去找对应匹配(严格等于)的case,找到的话,执行该case冒号后面的语句,遇到break结束或遇到}
找不到匹配的case,则执行default,遇到break结束或遇到}
switch (vegetabel) {
case '西红柿鸡蛋':
console.log('西红柿鸡蛋为5元')
break
case '土豆丝':
console.log('土豆丝为4元')
break
case '青菜':
console.log('青菜为3元')
break
case '西兰花':
console.log('西兰花为6元')
break
default:
console.log('抱歉,本店专供素菜')
break
}
例如:输入一个数字0-6 ,0表示周日, 1 表示星期一 ...
const num = +prompt('请输入一个数字')
switch (num) {
case 0:
alert('星期日')
break
case 1:
alert('星期一')
break
case 2:
alert('星期二')
break
case 3:
alert('星期三')
break
case 4:
alert('星期四')
break
case 5:
alert('星期五')
break
case 6:
alert('星期六')
break
default:
alert('输入错误')
break
}
while 循环
结构
while(条件) {
条件成立时候执行的逻辑
}
/* let i = 3
while (i <= 5) {
console.log(i)
i++ // 一定要加 为了条件为假
} */
练习:
1 在网页中输出1-10
let j = 1
while (j <= 100) {
document.write(`${j}<br/>`)
j++
}
2 计算1+3+5+...+99
let sum = 0 // 存储最终的结果
let k = 1
while (k < 100) {
sum = sum + k
k += 2
}
console.log(sum)
3 计算1-100所有是5的倍数的和
let sum = 0
let k = 1
while (k <= 100) {
if (k % 5 === 0) {
sum = sum + k
}
k++
}
console.log(sum)
4 计算5的积乘 1*2*3*4*5
let sum = 1
let k = 1
while (k <= 5) {
sum = sum * k
k++
}
console.log(sum) */ /* let sum = 1
let k = 1
while (k <= 5) {
sum = sum * k
k++
}
console.log(sum)
5 计算1-2+3-4+5-6+7+...-100
提示:我们可以转化为 1*1+2*(-1)+3*1+4*(-1)+...的形式更加方便
let sum = 0
let i = 1
let flag = 1
while (i <= 100) {
sum = sum + i * flag
flag = -flag
i++
}
console.log(sum)
6 打印
🍎🍎🍎🍎🍎
🍎🍎🍎🍎🍎
🍎🍎🍎🍎🍎
🍎🍎🍎🍎🍎
🍎🍎🍎🍎🍎
思路:每行先打印一个苹果,打印五次出现五个苹果后为一行,然后再打印第二行,以此类推。
let i = 1
while (i <= 5) {
let j = 1
while (j <= 5) {
document.write('🍎')
j++
}
document.write('<br/>')
i++
}
7.打印
🍎
🍎🍎
🍎🍎🍎
🍎🍎🍎🍎
🍎🍎🍎🍎🍎
提示:每行的苹果数量等于行数。
let i = 1
while (i <= 5) {
// 打印这行苹果数
let j = 1
while (j <= i) {
document.write('🍎')
j++
}
document.write('<br/>')
i++
}
7.打印
*
***
*****
*******
*********
思路: 打印5行,每行打印若干个空格 再打印若干个*
let i = 1 // 行数
while (i <= 5) {
//打印若干个空格 i=1 4个空格 i=2 3个空格
let j = 1
while (j <= 5 - i) {
document.write(' ')
j++
}
// 再打印若干个*
// i=1 1个* i=2 3个* i=3 5个*
let k = 1
while (k <= 2 * i - 1) {
document.write('*')
k++
}
document.write('<br/>')
i++
}
do-while
语法
do {
循环体
}while(条件)
执行过程
例子:
let i = 3
do {
console.log(i)
i++
} while (i <= 5)
do-while与while区别:
1.do-while至少会执行循环体一次
2.while用的多点,do-while用的比较少,在特定场景会使用
练习:
1.打印
*
***
*****
*******
*********
let i = 1 // 行数
do {
//打印若干个空格 i=1 4个空格 i=2 3个空格
let j = 1
while (j <= 5 - i) {
document.write(' ')
j++
}
// 再打印若干个*
// i=1 1个* i=2 3个* i=3 5个*
let k = 1
while (k <= 2 * i - 1) {
document.write('*')
k++
}
document.write('<br/>')
i++
} while (i <= 5)
for 循环
语法
for(表达式 1;表达式2;表达式3) {
循环体
}
注:
表达式 1 -> 变量初始化
表达式2 -> 循环条件
表达式3 -> 改变循环变量
执行过程:1 .先执行表达式1
2 .执行表达式2,表2的结果是true,则执行循环体 3, 循环体执行完毕, 执行表达式3,然 后再回到第二步
练习:
在页面输出1-10
for (let i = 1; i <= 10; i++) {
document.write(i + '<br />')
}
注意:
表达2缺省 表示永远为真,此时就是无限循环-死循环
for (;;) {
console.log('我爱中国')
}
练习:
提示做我女朋友 知道答应才不追问
let answer
for (; answer !== 'yes'; ) {
answer = prompt('答应做我女朋友?')
}
continue
continue 结束本次循环下一次继续
练习:
打印1-15 ,但是5的倍数不打印
for (let i = 1; i <= 15; i++) {
if (i % 5 === 0) {
continue
}
console.log(i)
}