JavaScript(二):选择、循环结构

一、概述
  • 程序结构有三种:顺序结构、选择结构、循环结构

  • 根据条件进行判断,从而执行不同的操作,称为选择结构(分支结构),其实就是条件判断

  • 选择结构的类型: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+'&nbsp;&nbsp;');
    }
    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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值