一、概述
-
程序结构有三种:顺序结构、选择结构、循环结构
-
根据条件进行判断,从而执行不同的操作,称为选择结构(分支结构),其实就是条件判断
-
选择结构的类型:if、switch
二、选择结构
1.if选择
分为:单分支结构、二分支结构、多分支结构、嵌套if结构
语法:
if(){
// dosomething
}
if(){
// dosomething
}else{
// dosomething
}
if(条件1){
代码块1
}else if(条件2){
代码块2
}else if(条件3){
代码块3
}
...
else{
代码块n
}
if(){
// do something
if(){
// do something
}
}
示例:
// 单分支结构,if
var age = 25;
if(age>=18){
console.log('您已成年');
console.log('您今年'+age+'岁');
}
// 案例:如果有任意两门课程的成绩大于95分,则奖励一个iPhone手机
var html = 90,css = 100,js = 96;
if(html>=95&&css>=95 || html>=95&&js>=95 || css>=95&&js>=95){
console.log('奖励一个iPhone手机');
}
// 二分支结构,if...else
if(age>=18){
console.log('您已成年');
}else{
console.log('您尚未成年');
}
// 案例:提示用户输入两个整数a、b,如果a能被b整除 或 a加b大于100,则输出a的值,否则输出b的值
var a = Number(prompt('请输入第一个整数:'));
var b = Number(prompt('请输入第二个整数:'));
if(a%b==0 || a+b>100){
console.log(a);
}else{
console.log(b);
}
// 多分支结构,if...else if...else if...else
if(age>=60){ // 将严格的条件放在最前面
console.log('老年');
}else if(age>=40){
console.log('中年');
}else if(age>=18){
console.log('青年');
}else{
console.log('童年');
}
// 嵌套if结构
var day = '周三';
var weather = '雨';
if(day=='周末'){
if(weather=='晴'){
console.log('今天出去浪里个浪!');
}else{
console.log('今天睡觉!');
}
}else{
console.log('今天要上课,心情很沉重!');
}
2.switch选择
用来进行等值判断
语法:
switch (表达式) { // 表达式为要判断的内容
case 常量1:
代码块1
break;
case 常量 2:
代码块2
break;
…
default: // 当所有常量都无法匹配时会执行default语句
语句;
}
示例:
// 使用if结构
if(today==1){
console.log('今天吃包子');
}else if(today==2){
console.log('今天吃油条');
}else if(today==3||today==4||today==5){
console.log('今天吃煎饼');
}else{
console.log('今天吃毛线,睡到自然醒');
}
// 使用switch结构
switch(today){
case 1:
console.log('今天吃包子');
// break; // 如果不写break,则一旦匹配后就会一直往下执行,直到遇到break为止
case 2:
console.log('今天吃油条');
// break;
case 3:
case 4:
case 5:
console.log('今天吃煎饼');
break;
default: // 如果前面的case都不匹配,才会执行default
console.log('今天吃毛线,睡到自然醒');
break;
}
- switch只适应于等值的判断,更直观
三、循环结构
概述:
-
重复性的执行某个操作,就是循环,称为循环结构
-
循环结构的类型:while、do…while、for、for…in、for…of
1.while循环
特点:先判断,再执行,只要条件成立就不停的执行
语法:
while(条件){
// 代码块
}
示例:
// 循环输出10次:好好学习,天天向上
var i=1;
while(i<=10){
console.log('好好学习,天天向上'+i);
i++; // 自增
}
// 案例1:计算100以内所有正整数之和
var sum=0;
var i=1;
while(i<=100){
sum+=i; // 累加求和,等价于sum=sum+i
i++;
}
console.log('100以内所有正整数之和为:'+sum);
2.do…while
特点:先执行,再判断,循环操作至少会执行一次
语法:
do{
// 代码块
}while(条件);
示例:
// 循环输出10次:好好学习,天天向上
var i=1;
do{
console.log('好好学习,天天向上'+i);
i++;
}while(i<=10);
// 案例1:计算1到50之间6的倍数之和
var sum=0;
var i=1;
do{
if(i%6==0){
sum+=i;
}
i++;
}while(i<=50);
console.log('1到50之间6的倍数之和:'+sum);
3.for循环
更适合对数据进行遍历
语法:
for(初始化;条件;迭代){
代码块
}
示例:
// 循环输出10次:好好学习,天天向上
for(var i=1;i<=10;i++){
console.log('好好学习,天天向上'+i);
}
// 小括号中的三个部分都可以省略,但分号不能省略
// 这样做会一直循环下去
for(;;){
console.log('好好学习,天天向上');
}
// 案例1:循环输入五门课程的成绩,并计算平均分
var sum=0;
for(var i=1;i<=5;i++){
var score=Number(prompt('请输入第'+i+'门课程的成绩:'));
sum+=score;
}
var avg=sum/5;
console.log('五门课程的平均分为:'+avg);
// 案例2:输出[1,100]之间不能被3整除的数字之和
var sum=0;
for(var i=1;i<=100;i++){
if(i%3!=0){
sum+=i;
}
}
console.log('不能被3整除的数字之和:'+sum);
4.for…in
对集合数据进行迭代遍历,循环变量是遍历到的数据在集合中的索引顺序(从0开始),而非数据本身
语法:
for(循环变量 in 集合){
循环操作
}
示例:
// 字符串,可以将字符串看作是由许多字符组成的集合
var str = "welcome";
// index表示集合中每个元素的索引/序号,索引从0开始,并不是元素本身
for(var index in str){
console.log(index,str[index]);
}
5.for…of
对集合数据进行迭代遍历,循环变量就是遍历到的数据本身
语法:
for(循环变量 of 集合){
循环操作
}
示例:
var str = "welcome";
for(var c of str){
// c表示集合中的每个元素
console.log(c);
}
6.循环控制
-
break:跳出整个循环,执行循环之后的代码,一般与if一起使用
-
continue:跳出本次循环,执行下一次循环(本次尚未执行完的代码不再执行)
示例:
// 将1-20之间的整数相加,当累加值大于50时停止相加,输出当前整数和累加值
var sum=0;
for(var i=1;i<=20;i++){
sum+=i;
if(sum>50){
console.log('当前整数:'+i+',累加值:'+sum);
break; // 停止循环的执行
}
}
// 计算1-10之间所有偶数和
var sum=0;
for(var i=1;i<=10;i++){
if(i%2!=0){
continue; // 如果i是奇数,则跳过本次循环,不累加,执行下一次循环
}
sum+=i;
}
console.log(sum);
7.二重循环
一个循环中嵌套着另一个循环,称为二重循环,各种循环可以相互嵌套
- 外层循环变量变化一次,内层循环变量要变化一遍
- 二重循环中的break和continue,遵循就近原则
示例:
// 案例:打印九九乘法表
for(var i=1;i<=9;i++){
for(var j=1;j<=i;j++){
document.write(j+'*'+i+'='+i*j+' ');
}
document.write('<br>')
}
/**
* 1.用*打印直角三角形(1,2,3,4,5....)
*/
var rows = Number(prompt('请输入要打印的行数:'));
// 外层循环控制行数
for(var i=1;i<=rows;i++){
// 内层循环控制每行*的数量
for(var j=1;j<=i;j++){
document.write('*');
}
document.write('<br>'); // 每打印一行,换一行
}
8.for循环、for-in、forEach、for-of四大循环
- 详细使用与解析请参考:https://www.cnblogs.com/amujoe/p/8875053.html