-
switch语句
swicth语句结构:
switch (key) {
case value:
break;
case value:
break;
case value:
break;
default:
break;
}
var x = prompt('请输入选项 A-D'); switch (x) { case 'A': alert('A选项') break; case 'B': alert('B项') break; case 'C': alert('C选项') break; case 'D': alert('D选项') break; default: break; }
认识单词:
swicth(选择,转换) case(选项)
break:终止,停止
value:值
default:默认的
注意点:1. switch 后的key一般是一个变量
2. case后一般就是一个值,"1" 1
3. 没有break不会中断
4. switch语句体内部,可以嵌套一些if语句,或者for都可以
执行流程:
1. 拿switch后的key和case后的value进行全等比对(===)
2. 匹配到的,就执行对应的代码段,依次向下,遇到break终止
3. default: 当条件都不满足会走default
//输入月份查询当月天数 var x = prompt('请输入选项 月份 1-12'); //输入2 "2" switch (x - 0) { // x*1 x/1 case 1: case 3: case 5: case 7: case 8: case 10: case 12: alert('31天') break; case 2: alert('28天') break; case 4: case 6: case 9: case 11: alert('30天') break; default: alert('没有匹配到') break; }
switch语句案例:
已知银行整存整取存款不同期限的月息利率分别为:
月息利率=
0.63% 期限=1年
0.66% 期限=2年
0.69% 期限=3年
0.75% 期限=5年
0.84% 期限=8年
输入存款的本金和年限,求到期时能从银行得到的利息与本金的合计。
利息的计算公式为:利息=本金×月息利率×12×存款年限。
var money = +prompt('请输入存储的本金') var x = +prompt('请输入存款年份');//正号也可以进行隐式转换,数字 var lx = 0;//存储利息用的变量 switch (x) { case 1: lx = money * 12 * x * 0.0063 alert('本息和是' + (lx + money)) break; case 2: lx = money * 12 * x * 0.0066 alert('本息和是' + (lx + money)) break; case 3: lx = money * 12 * x * 0.0075 alert('本息和是' + (lx + money)) break; case 4: lx = money * 12 * x * 0.0084 alert('本息和是' + (lx + money)) break; default: break; }
简化版本:
var money = +prompt('请输入存储的本金') var x = +prompt('请输入存款年份');//正号也可以进行隐式转换,数字 var lx = 0;//存储利息用的变量 switch (x) { case 1: lx = money * 0.0063 * 12 * x; // lx重新赋值 break; case 2: lx = money * 0.0066 * 12 * x break; case 3: lx = money * 0.0069 * 12 * x break; case 5: lx = money * 0.0075 * 12 * x break; case 8: lx = money * 0.0084 * 12 * x break; } alert(lx + money)
-
打断点:代码的执行顺序
f12 -- >sources-->双击打断点的文件-->找到断点位置(自己决定)--->刷新页面--->按下step over next--->测试完毕记得关闭断点
举例如下:
var x = "B"; switch (x) { case 'A': document.write('A选项') break; case 'B': document.write('B项') document.write('BB项') document.write('BBB项') break; case 'C': document.write('C选项') break; case 'D': document.write('D选项') break; default: break; }
在控制台打断点,观察代码运行顺序
点击右侧图标
观察代码运行顺序:
-
三目运算符
也称三元运算符:
语法:
关系表达式?值1/语句体:值2/语句体
关系表达式:比较出来一个布尔类型的结果
执行流程:
关系表达式为true,就走?后面的语句体
关系表达式为false,就走:后面的语句体
var x = 11; x%2==0?document.write('是偶数'):document.write('是奇数');
运算符的优先级
运算符号比较多,== ?: =
先判断x%2==0,再进行三目运算,得到的运算结果为偶数,最后再进行赋值
var year = 2008; // 录入一个数字年份,判断是否是闰年 year%4==0&&year%100!=0||year%400==0?alert('是闰年'):alert("是平年");
-
while循环
代码中: 重复执行一段代码
条件:
初始值
终点值(条件判断)
每次让初始值增加多少
循环的格式:
初始值
while(条件判断){
循环体;
初始值变化多少
}
执行步骤:
1. x = 1
2. x<=20 -->true-->进循环体,x变量变化后重新进行判断,只要x满足条件就会一直循环 -->false--->出程序
var x=+prompt('请输入一个数字'); while (x <= 20) { document.write(x + '<br>'); x++; }
while循环的格式:
初始值;
while(条件判断){
循环体
初始值的变化
}
var x = 2; while (x == 1) { alert('xx') x--; }
do while()循环格式
初始值;
do{
循环体
初始值的变化
}while(条件判断);
var x = 2; do { alert('xx') x--; } while (x == 1)
注意:do while先走{},在走判断
问题:while循环先走{}还是条件判断呢? 条件判断
while和do while不同点:
do while循环会先走循环体,在执行判断
-
for循环
for(初始值;条件判断;初始值的更新){
语句体
}
执行流程:
1. 先执行 初始值
2. 走条件判断 --->true-->进循环体{}-->初始值的更新--->重新判断--->true-->进循环体{}-->初始值的更新--->重新判断 --->false--->出程序
// 打印数字1-10 for(var i=1;i<=10;i++){ document.write(i + "<br>") }
for循环案例:
1. 打印 1-10内部的偶数
for (let x = 1; x <= 10; x++) { if (x%2==0){ document.write(x + '<br>') } }
2. 求1-10所有数字的和
for (var i = 1; i <= 10; i++) { // i = 1 2 3 4 .. sum += i; // 通过循环,把每一个循环变量+到sum中 } console.log(sum);
3. 求1-100内是3的倍数的个数
var count = 0; for (var i = 1; i <= 100; i++) { //循环了多少次(100次) // i= 1 2 3 4...100 // 对i进行判断 if (i % 3 == 0) { // 对1 2 3 4...100进行一个一个的判断。满足是3的倍数了 count++; } } console.log(count);
4.求 100-200内所有能被5整除的数字的和
var sum = 0; for (var i = 100; i <= 200; i++) { if (i % 5 == 0) { sum += i; } } console.log(sum);
5.打印100–200之间所有能被5整除的数
//打印100–200之间所有能被5整除的数 for (var x = 100; x <= 200; x++) { if (x % 5 == 0) { document.write(x + '<br>') } }
6.打印100–200之间所有能被5整除的个数
//打印100–200之间所有能被5整除的个数 var count = 0; for (var x = 100; x < 200; x++) { if (x % 5 == 0) { count++; } } document.write(count + '<br>');
7.打印100–200之间所有能被5整除并且能被3整除的个数
// 打印100–200之间所有能被5整除并且能被3整除的个数 var count = 0; for (var x = 100; x <= 200; x++) { if (x % 3 == 0 && x % 5 == 0) { count++; } } document.write(count + "<br>" );
8.打印100–200之间所有能被5整除并且能被3整除的数字和
// 打印100–200之间所有能被5整除并且能被3整除的数字和 var sum = 0; for (var x = 100; x < 200; x++) { if (x % 3 == 0 && x % 5 == 0) { sum += x; } } document.write(sum + "<br>");
9.打印100–200之间所有不能被5整除并且能被3整除的数字和
//打印100–200之间所有不能被5整除并且能被3整除的数字和 var sum = 0; for (var x = 100; x < 200; x++) { if (x % 3 == 0 && x % 5 != 0) { sum += x; } } document.write(sum + "<br>");
10.输入月份显示天数
var month = +prompt('请输入您所要查询的月份') switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: document.write('31天') break; case 4: case 6: case 9: case 11: document.write('30天') break; case 2: document.write('29或者28天') break; default: break; }
11.实现运算数和运算符计算
编程实现以下功能:读入两个运算数(data1和data2)及一个运算符(op),计算表达式data1 op data2的值,其中op可为+,-,*,/
var data1 = +prompt('请输入第一个数字'); var data2 = +prompt('请输入第二个数字'); var op = prompt('请输入一个运算符...'); var y = 0; switch (op) { case '+': y = data1 + data2 break; case '-': y = data1 - data2 break; case '*': y = data1 * data2 break; case '/': y = data1 / data2 break; case '%': y = data1 % data2 break; default: break; } document.write(y)