一、switch…case
基本原理
- switch在执行时,会将switch括号里面的值与case后的语句依次进行对比,一旦case匹配,就会顺序执行后面的代码,直到switch语句结束(不管后面的case是否匹配),所以编码时需要在每个case代码块后面写上break,以便在第一次case匹配成功后,立即跳出switch语句。
- switch在和case比较时是全等比较(===),即数据类型必须相同。
案例
输入一个数字,判断是星期几
var num = parseFloat(prompt('请输入数字'));
switch(num){
case(1) :
console.log('周一');
break;
case(2) :
console.log('周二');
break;
case(3) :
console.log('周三');
break;
case(4) :
console.log('周四');
break;
case(5) :
console.log('周五');
break;
case(6) :
console.log('周六');
break;
case(7) :
console.log('周日');
break;
default :
console.log('请输入0~7之间');
break;
}
输入分数,判定优良差和不及格
var score = parseFloat(prompt('请输入分数'));
switch(true){
case(90 < score <= 100) :
console.log('A');
break;
case(80 < score <= 90) :
console.log('B');
break;
case(70 < score <= 80) :
console.log('C');
break;
case(60 < score <= 70) :
console.log('D');
break;
case(0 < score <= 60) :
console.log('不及格');
break;
default :
console.log('请输入正确的分数');
break;
}
二、for循环
执行过程
for( var i = 0 ;i < 100 ; i++){
console.log(i)
}
以上面代码为例:
首次循环:
第一步:初始化 var i = 0
第二步:判断执行条件 i<100
第三步:执行循环体
第一步:i++
第二次循环:
第一步:判断执行条件 i<100
第二步:执行循环体
第三步:i++
第三次循环:
… …
… …
死循环
for循环括号里表达式可以不写,但分号(;)不能省略
// 特殊情况
var i = 0;
for( ; i < 100; ){
console.log(i);
i++;
}
for( ; ; ) // 死循环
for( ; true ; ) // 死循环
案例
打印1-100之间的偶数
for(var i = 1 ; i <= 100 ; i++ ){
if(i % 2 == 0){
console.log(i)
}
}
计算1到100的和
var sum = 0;
for(var i = 1 ; i <= 100 ; i++ ){
sum += i;
}
console.log(sum);
计算1-100之间所有偶数的和
var sum = 0;
for(var i = 1 ; i <= 100 ; i++ ){
if(i % 2 == 0){
sum += i;
}
}
console.log(sum);
打印矩形
*****
*****
*****
*****
*****
for(var i = 0 ; i < 5 ; i++){
for(var j = 0 ; j < 5 ;j++){
document.write("*")
}
document.write("</br>")
}
打印正三角形
*
**
***
****
*****
for(var i = 0 ; i < 5 ; i++){
for(var j = 0 ; j < i + 1 ;j++){
document.write("*")
}
document.write("</br>")
}
打印倒三角形
*****
****
***
**
*
for(var i = 0 ; i < 5 ; i++){
for(var j = 0 ; j < 5 - i ;j++){
document.write("*")
}
document.write("</br>")
}
打印等腰三角形
*
***
*****
*******
*********
for(var i = 0 ; i < 6 ; i ++ ){
for(var j = 0 ; j < 6 - i; j++ ){
document.write(" ")
}
for(var j = 0 ; j < 2 * i - 1; j++ ){
document.write("*")
}
document.write("<br>")
}
打印乘法口诀表
1*1 = 1
1*2 = 2 2 * 2 = 4
1*3 = 3 2 * 3 = 6 3 * 3 = 9
... ...
for(var i = 1 ; i <= 9 ; i++){
for(var j = 1 ; j <= i ;j++){
document.write(j + "*" + i + "=" + i*j +" ")
}
document.write("</br>")
}
打印三位数位上有3或者7的数字
for(var i = 100 ; i < 1000 ; i ++ ){
var unit = i % 10 ;
var tens = parseInt(i / 10 % 10);
var hundreds = parseInt(i / 100);
if(unit == 3 || unit == 7 || tens == 3 || tens == 7 || hundreds == 3 || hundreds == 7){
console.log(i)
}
}
求100-999之间的水仙花数。abc =a3 +b3+c3
for(var i = 100 ; i < 1000 ; i ++ ){
var c = i % 10 ;
var b = parseInt(i / 10 % 10);
var a = parseInt(i / 100);
if(a*a*a + b*b*b + c*c*c){
console.log(i)
}
}
计算100的阶乘 100!(1*2…*100)
var factorial = 1
for(var i = 1 ; i <= 100 ; i ++ ){
factorial *= i;
}
console.log(factorial)
求1!+2!+3!+…+20!的值
var factorial = 1;
var sum = 0;
for(var i = 1; i <= 20; i++){
factorial *= i;
sum += factorial;
}
console.log(sum);
输出1-100之间所有的素数 / 质数(只能被1和自身整除的数,但是1不是质数)
//方法一:标志位法
var flag = true
for(var i = 1 ; i <= 100 ; i ++ ){
for(var j = 2 ; j < i ; j++){
if(i % j == 0){
flag = false;
break;
}
}
if(flag && i != 1){
console.log(i)
}
flag = true
}
//计数法
var count = 0
for(var i = 1 ; i <= 100 ; i ++ ){
for(var j = 1 ; j <= i ; j++){
if(i % j == 0){
count++
}
}
if(count == 2){
console.log(i)
}
count = 0
}
三、while 和 do…while
两者区别
- while循环执行的时候,会先进行条件判断,如果条件为真,就执行循环体,如果为假,就跳出循环;
- do…while执行的时候,会先执行一遍循环体,然后再进行条件判断,如果条件为真,继续执行循环体,如果条件为假,就跳出循环;
也就是说:在一开始条件为假的情况下,while是循环体一次都不执行,但是do…while至少要执行一次循环体;
死循环
while(true);
while(){};
四、break 和 continue区别
break :
- 在switch语句中跳出switch
- 在for循环中,跳出离它最近的一层循环
continue :
- 结束本次循环,返回i++开始下一次循环