js流程控制语句(分支&循环)

本文详细介绍了JavaScript中的控制流,包括按语句顺序执行、分支结构(if、else、switch)、循环(while、for、do-while)以及三元运算符的用法,帮助读者理解如何改变代码执行顺序和控制逻辑流程。
摘要由CSDN通过智能技术生成

js的代码默认按照先后顺序执行, 我们也可以来改变执行顺序

顺序:按照语句先后顺序依次执行

选择(分支):if、三元运算符、switch

重复(循环):while、for、do-while

分支语句

分支语句,又叫做判断语句

如果满足条件,则执行指定的代码,如果不满足,则执行另一份的代码或者什么都不执行

if分支

单分支

()内表达式结果为true,则运行{}内的代码,反之不运行

if(表达式){
    代码块   
}
// 示例:
if(2>1){
    console.log(haha);
}

双分支

if(表达式){
    代码块1    // 表达式结果为true,运行代码块1
}else{
    代码块2    // 表达式结果为false,运行代码块2
}
// 示例:
if(10>5){
    console.log('10大于5');
}else{
    console.log('10小于5');
}

多分支

if(表达式1){
    代码块1        // 表达式1为true则运行代码块1
}else if(表达式2){
    代码块2        // 表达式1为false时,继续判断表达式2,为true则运行代码块2
}else{
    代码块3        // 表达式结果都为false,运行代码块3
}
// 示例:
if(10>5){
    console.log('10大于5');
}else if(10>8){
    console.log('10大于8');
}else{
    console.log('10小于5、8');
}

简写形式

当代码块中只有一句代码时,可以省略{},还可以写在判断条件的后面

if(true) console.log(1)
// 等同于
if(true){
    console.log(1)
}

多分支同样如此 

if(true) console.log(1)
else if(false) console.log(2)
else if(false) console.log(3)
else console.log(4)

if嵌套

if中包含另一个if语句,就是if嵌套

// 判断成绩的例子
var num = 100;
if(num <= 100 && num >= 0){
    if(num  > 90) console.log('优秀')
    else if(num > 60) console.log('及格')
    else console.log('不及格')
}else console.log('分数不在0到100内')
        

switch分支

switch分支和if分支功能类似,区别在于if可以判断一个范围,switch用于精确判断

1、先计算表达式值(num的所在位置)

2、判断表达式值是否全等于  case 后的值,相等则执行 : 后的语句,遇到 break 或 } 结束

3、找不到对应的case,则执行default,default可以不写

switch(num){
    case 1:
        // num为1时执行的语句
        break;
    case 2:
        // num为2时执行的语句
        break;
    default:
        // 以上都未匹配时执行的默认语句
        break;
}

break:结束switch的执行

如果不加break,匹配到case后会将后面所有的代码都执行,又叫switch语句代码穿透

let num = 1;
switch(num){
    case 1:
        console.log(1);
    case 2:
        console.log(2);
    default:
        console.log(3);

// switch匹配到case 1,打印 1
// 没有break返回,继续向下执行,打印 2 和 3

 三元表达式

三元表达式又叫三目运算符

判断一个表达式的值是否为真,为真时返回 ? 后的结果,为假时返回 : 后的结果

// 表达式 ? 值1 : 值2

let num = 5>1 ? 10 : 20;
console.log(num); // 10

三元表达式可以写多个嵌套

let bool1 = true;
let bool2 = true;
let num = bool1 ? bool2 ? 10 : 20 :30;
console.log(num); // 10

// bool1为真,返回 bool2 ? 10 : 20
// bool2为真,返回 10

循环语句

while循环

1、判断表达式结果为true,执行循环体

2、执行完毕后,再次判断表达式结果,为true继续执行

3、直到表达式结果为false,结束循环

while(表达式){
    //循环体
}
let i = 0;
while(i<=5){
    console.log(i);
    i++;
}
// 打印 0,1,2,3,4,5

do while循环

和while循环相似,但do while是先执行一次循环体,再去判断表达式

do{
 // 循环体
}while(表达式)
let i = 0;
do{
    console.log(i);
    i++;
}while(i<=5);
// 打印 0,1,2,3,4,5

如果表达式结果始终为true,则为死循环

所以通常需要控制表达式,让它不始终为true

// 无限打印 1
while(true){
    console.log(1)
}
// 无限打印 1
do{
    console.log(1)
}while(true)

for循环

1、执行表达式1

2、执行表达式2,表达式2的结果为true,则执行循环体

3、循环体执行完毕,执行表达式3,再返回第2步

for(表达式1;表达式2;表达式3){
	// 循环体
}
// 表达式1:变量初始化
// 表达式2:循环条件
// 表达式3:改变循环变量

for(let i=0; i<=5; i++){
	console.log(i);
}
// 打印 0,1,2,3,4,5

表达式2缺省,表示永远为真,死循环

其他表达式可以不写,并不会报错,但是两个分号必须要加,否则报错

for(;;){
	console.log('1');
}

for(){ // 报错
    console.log('1');
}

嵌套循环

for (a = 0; a <= 3; a++) {   // 控制行数
  for (b = 0; b <= a; b++) { // 控制☆个数
    document.write('☆');
  }
  document.write('</br>');   // 每一次外层循环结束都换一行
}

// 页面输出结果:
☆
☆☆
☆☆☆
☆☆☆☆

循环控制

continue

 在循环中可以添加continue关键字,用来结束本次循环,执行下一次循环

for(let i=0; i<=5; i++){
    if(i === 3){    // 当i等于3时,结束本次循环,执行下一次循环
        continue;
    }
    console.log(i);
}
// 打印 0,1,2,4,5

break

还可以使用break关键字,结束循环

for(let i=0; i<=5; i++){
    if(i === 3){    // 当i等于3时,结束循环
        break;
    }
    console.log(i);
}
// 打印 0,1,2

标识符

在嵌套循环中,可以结束指定某个循环(默认结束当前所在循环)

在循环前写上标识符+冒号,在break/continue后加上对应标识符即可

a:for(let i=0; i<=5; i++){
    b:for(let j=0; j<=5; j++){
        if(j === 2){
            break a;
        }  
        console.log(j);
    }
}
// 打印 0,1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值