3.1 条件执行语句

根据不同的条件执行指定条件下的路径代码(符合次条件下的代码),从而达到不同的结果

3.1.1 if 语句

if语句是使用最频繁的条件执行语句

  1. if(条件) {
  2. 满足条件后执行的代码
  3. } else {
  4. 其他条件时执行的代码
  5. }

这里的条件可以是任意表达式,且求值的结果不一定是布尔值,ECMAScript会自动调用Boolean()函数来将条件结果改为布尔值,如果为true就执行满足条件的代码,如果为false就执行else里的代码

if 语句可以多个一起使用,达到多条判断效果

  1. if(条件1) {
  2. 代码1;
  3. } else if(条件2) {
  4. 代码2;
  5. } else if(条件3){
  6. 代码3
  7. } else {
  8. 条件4
  9. }

每个if通过else来连接,以达到对同一个值的判断 ,通过由上到下的顺序来依次和条件进行匹配,最终执行匹配条件下的代码

3.1.2 switch 语句

switch用于不同条件下执行不同代码,在条件较多时比if语句有优势,设定特定值来进行条件判断时推荐使用switch

  1. switch(表达式) {
  2. case value1:
  3. // 表达式 等于 value1 时要执行的代码
  4. break;
  5. case value2:
  6. // 表达式 等于 value2 时要执行的代码
  7. break;
  8. default:
  9. // 表达式 不等于任何一个 value 时要执行的代码
  • 关键字 switch 后面括号内可以是表示或值,通常是一个变量
  • switch可用于所有变量,不局限于数值
  • 关键字 case,后跟一个选项的表达式或值,后面跟一个冒号
  • switch 表达式的值会与结构中的 case 的值做比较
  • 如果存在匹配全等(===),则与该 case 关联的代码块会被执行,并在遇到 break 时停止,整个 switch 语句代码执行结束
  • 如果所有的 case 的值都和表达式的值不匹配,则执行 default 里的代码

    1. let num = 25;
    2. switch(true) {
    3. case num < 0:
    4. console.log('less than 0');
    5. break;
    6. case num >= 0 && num <= 10:
    7. console.log('Between 0 and 10');
    8. break;
    9. case num > 10 && num <= 20:
    10. console.log('Between 10 and 20');
    11. break;
    12. default:
    13. console.log('More than 20')
    14. }
  • <判断符输出的结果都为布尔值,所以需要switch给与的值也为布尔值,以此来和变量进行判断.

  • switchcase只支持判断是否全等,所以需要确认判断值和条件值是否匹配.

    3.2 循环执行语句

  • 在循环语句中满足循环条件即可循环,当条件不满足时退出循环

  • 当条件转换成布尔值只能是 true 时执行死循环
    1. while('aaaa')
    2. while(1)
    3. while(true)
    常量转换成布尔值只为true时,死循环

    3.2.1 for 循环

    1. for(初始化变量;条件表达式;操作表达式) {
    2. //循环代码
    3. }
    4. 例子:
    5. for(let i = 1; i < 5; i++) {
    6. console.log(i);
    7. }
    无法通过while循环实现的逻辑,同样不能通过 for 循环实现,for循环只是将循环相关的代码封装在一起而已。

在for循环里面,初始化、条件表达式、变量自加表达式都不是必须填写的 当都没有填写时,它将变为无穷循环

  1. for( ; ; ) { //虽然不需要填写,但是 ; 必须填写
  2. //无穷循环
  3. }

当只填写条件表达式时,和while循环样式就想同了

  1. let sum = 5;
  2. let i = 1;
  3. for( ; i < sum ; ) {
  4. console.log(i);
  5. i++
  6. }

3.2.2 循环嵌套

for循环里面可以再嵌套多个循环,不一定全是循环,也可以是判断语句,多个循环嵌套输出可以表达出更复杂的用法
例子:打印星星

  1. bar star = '';
  2. for(let i = 1; i < 5; i++) {
  3. for(let j = 1; j < i; j++) {
  4. star += '⭐';
  5. console.log(star);
  6. }

3.2.3 while 循环

while循环先检测循环条件,再执行循环代码,当不满足循环条件时退出循环

  1. let i = 1;
  2. while(i < 5) {
  3. console.log(i);
  4. i += 1;
  5. }

在while循环还未开始时检测循环条件,不满足直接不进入循环,转而执行后面的代码

do while 循环

这是一种后测试循环语句,即此循环先运行一边,再判断循环条件,该循环体内部代码至少执行一次

  1. let i = 0;
  2. do {
  3. i += 2;
  4. console.log(i);
  5. } while(i < 10);

当变量不满足循环条件,但进入循环一次又满足后:

  1. let i = 10;
  2. do {
  3. i -= 2;
  4. console.log(i);
  5. } while(i < 10 && i > 0);

循环依旧会执行下去

3.2.5 break 和 continue 语句

breakcontinue语句为执行循环代码提供了严格的控制手段。其中:

  • break 语句用于立即退出循环,强制执行后的下一条语句。

    1. let num = 0;
    2. for (let i = 0; i < 10; i++) {
    3. if(i % 5 == 0) {
    4. break;
    5. }
    6. num++;
    7. }
    8. console.log(num); // 4
  • continue 语句也用于立即退出循环,但会再次从循环顶部开始执行

    1. let num = 0;
    2. for(let i = 1; i < 10; i++) {
    3. if(i % 5 == 0) {
    4. continue;
    5. }
    6. num++;
    7. }
    8. console.log(num); // 8

    break 和 continue 都可以与标签语句一起使用,返回代码中特定的位置。这通常是在嵌套循环

通过内部循环的 break 跳出外部循环

  1. let num = 0;
  2. outeemost:
  3. for(let i = 0; i < 10; i++) {
  4. for(let j =0; j < 10; j++) {
  5. if(i == 5 && j == 5) {
  6. break outermost;
  7. }
  8. num++;
  9. }
  10. }
  11. console.log(num); //55

通过 continue 终止当前内部循环

  1. let num = 0;
  2. outermost:
  3. for(let i = 0; i < 10; i++) {
  4. for(let j =0; j < 10; j++) {
  5. if(i == 5 && j == 5) {
  6. continue outermost;
  7. }
  8. num++;
  9. }
  10. }
  11. console.log(num); // 95

添加标签语句后,continue 可以直接终止当前循环,开始外部下一阶段循环

3.2.6 标签语句

  • 标签语句用于给语句加标签,语法如下
  • label: statement
  • 下面是一个例子:
    1. start: for(let i = 0; i < count; i++) {
    2. console.log(i);
    3. }
    在这个例子中,start 是一个标签,可以在后面通过 break 或 continue 语句引用。标签语句的典型应用场景是嵌套循环。