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来连接,以达到对同一个值的判断 ,通过由上到下的顺序来依次和条件进行匹配,最终执行匹配条件下的代码

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 时要执行的代码
  10. }
  • 关键字 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时,死循环

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. }

2. 循环嵌套

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

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

3. while 循环

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

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

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

4. 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);

循环依旧会执行下去

5. break 和 continue 语句

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

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

    1. let num = 0;
    2. for (let i = 1; 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. outermost:
  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可以直接终止当前循环,开始外部下一阶段循环

6. 标签语句

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