JavaScript(二):流程控制语句相关及案例

一、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("&nbsp;")
	 }
	 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 +"&nbsp;&nbsp;&nbsp;")
	 }
 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++开始下一次循环
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值