4、流程控制-判断和循环

流程控制:

  • 计算机处理代码的执行过程,默认按照自上而下的顺序读取
  • 某些情况下,我们是需要更改这些读取顺序。

if判断:

  • 格式1:
    if(条件) 内容 当条件为真时,输出执行的内容
  • 格式2:
    if(条件){ 当条件为真时,输出执行的内容 }
    区别: 不加花括号的只能影响到紧跟在条件后的第一条语句,而加了花括号则可以控制花括号内的所有语句
  • 格式3:
    if(条件){
         条件为真时,执行的代码
    }else{
         条件为假时,执行的代码
    }

如果...否则...

  • 格式4:
  if(){
  //当条件为真时,执行代码否则往下判断
  }else if(){
  //当else if的条件为真时,执行代码,否则往下判断
  }else if(){
  //当else if的条件为真时,执行代码,否则往下判断
  }else{
  //当所有条件都为假,执行代码
  };

如果...否则如果...否则如果...否则...

巢状分支:
巢状分支也叫if嵌套,if语句允许在其中继续嵌套if语句或者其他代码
    if(){
    //外层if循环语句
       if(){
            //内层嵌套的语句
       }
    }
注意:if语句的判断条件很灵活,只要是能够输出Boolean的数据都可以当成条件

switch分支语句:

 switch(n){
      case 1:
        执行代码块 1
        break;
      case 2:
        执行代码块 2
        break;
      default:
        n 与 case 1 和 case 2 不同时执行的代码
  }

工作原理: 首先设置表达式 n(通常是一个变量)。随后表达式的值会与结构中的每个 case 的值做比较。如果存在匹配,则与该 case 关联的代码块会被执行。
注意: 就算n与一个case的值匹配成功,也不会停止,而是会继续向下匹配,有时候我们并不需要它再做多余的匹配,所以我们可以用 break 语句来阻止代码继续运行,

break:终止,可以终止代码执行。

三目运算:

说到判断,在js里面还有一个简单的判断方法不得不提,那就是三目运算,又被称为三元运算:
条件? 语句一 : 语句二;
这就是三目运算的结构,先写判断条件,条件后面跟着一个问号,再往后是两个输出语句,用冒号隔开,
如果条件为真,则输出语句一、为假则输出语句二
注意: 三目运算的输出结果会返回给它本身,所以你可以用一个变量来接收这个语句,则可以直接用它来使用输出比如:

//比较两个数的大小并把大的数输出
var i=10,j=20;
//第一种方法:
var max = i>j ? i : j;
console.log(max);
//第二种方法:
console.log(i>j ? i : j;);

三目运算还可以嵌套三目运算,如下例:

//判断三个数谁最大
var i = 10,j = 20,x = 30;
var max = i>j ? i>x ? i : x : j>x ? j : x ;
//是不是看着头晕目眩的?这就是嵌套的一个不好的地方,不容易使人看懂,我们可以修改一下
max =  i>j ?(i>x ? i : x) : (j>x ? j : x) ;
//这样看着是不是就好看多了?还可以这样:
max =  i>j ?
    i>x ? i : x :
    j>x ? j : x ;
//js可以忽略掉多余的空格和换行,所以将你的代码写的更整洁漂亮吧
console.log(max);

注意: JS中所有的符号都必须用英文符号,否则会报错,

循环语句:

当我们需要做某些大量的、重复的,或者是重复但是值不同的,这个时候如果使用循环就会很方便了

1、For循环

for (语句 1; 语句 2; 语句 3){
  //被执行的代码块
  }

语句1:定义循环的变量,在循环(代码块)开始前执行
通常我们会使用语句 1 初始化循环中所用的变量 (var i=0)。

语句2:定义运行循环(代码块)的条件
通常语句 2 用于评估初始变量的条件。

语句3:定义跳出循环的值,在循环(代码块)已被执行之后执行
通常语句 3 会增加初始变量的值,如递增或递减。

for (var i=0; i<5; i++){
  alert(i);
  }

注意: 三个语句都可以忽略并写在其他地方,但是括号里必须有两个;,如:

var i = 0;
for(;;){
    alert(i);
    i++;
    if(i>=5){
        break;
        //break,当i>=5时终止循环
        }
}

注意: 语句1可以写在for循环外边或里面,但是时变量i改变的语句3必须写在for循环的内部,如果忽略掉语句2,则必须在循环内部设置break来跳出循环,否则for循环会成为死循环,无法停止可能会使浏览器崩溃。

For/In循环:

for/in语句可以循环遍历对象的属性:

var a,b;
var person = {name:"名字",age:18,}
for (a in person){
    b =b + a;
}
alert(b);//得到的结果会是:名字18

for/in循环会依次遍历对象中的属性,并将每次得到的属性赋值给a。
什么是对象?这个问题会在后面的笔记中讲到。

While循环和Do/While循环:

while循环:

while循环会在指定条件为真时循环执行代码块

while (条件){
  需要执行的代码
  }
如:
var i = 1;
while(i<10){
    console.log(i);
    i++;
}

注意: while循环和for(;;)循环类似,也能够执行相同的任务,所以注意,一定要在循环里设置可以使循环终止的代码,如上面的i++,否则会陷入死循环,可能会导致浏览器崩溃。

do/while循环:

do/while 循环是 while 循环的变体。该循环会在检查条件是否为真之前执行一次代码块,然后如果条件为真的话,就会重复这个循环,所以,do/while循环至少可以执行一次。

do{
  需要执行的代码
  }while (条件);
  
  var i = 0;
  do{
  console.log(i);
  i++;
  }while(i>=5);

do/while循环至少执行一次,上面的代码,至少可以输出一次i,

跳出循环-break和continue语句:

上面已经介绍过break语句,现在我们来好好说一下它、还有一个类似的语句:continue
continue同样具有跳出的意思,但和break不同的是:

  • break跳出整个循环,即循环代码执行到break就会中断,不在向下执行,即使下面还有未执行的代码
  • continue跳出这一次循环,即循环代码碰到continue就会跳过这一次的循环,但是下面的代码继续执行,如果有的话
    我们用下面的代码演示一下:
 //使用break来跳出循环
 for(var i=0;i<10;i++){
 //我们了一个自增的数字,现在让我们用它来输出1、2、3~~9
 if(i==3){
 break;
 }
 console.log(i);
 };
 //使用continue来跳出循环
 for(var i=0;i<10;i++){
 //我们了一个自增的数字,现在让我们用它来输出1、2、3~~9
 if(i==3){
 continue;
 }
 console.log(i);
 }

运行一下试试看,可以看到添加break语句的循环输出的是0、1、2,break之后的循环都不在执行
而添加continue语句的循环输出的是0、1、2、4、5、6、7、8、9,只有执行了continue语句的3被跳过

for和whiled的比较:

for:

var i =0;
for(;i<5;){
alert(i);
i++
};

while:

var i = 0;
while(i<5){
alert(i);
i++
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift 提供了类似 C 语言的流程控制结构,包括可以多次执行任务的for和while循环,基于特定条件选择执行...
    穷人家的孩纸阅读 4,030评论 1 1
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 9,105评论 0 2
  • Swift提供了多种控制流声明。包括while循环来多次执行一个任务;if,guard和switch声明来根据确定...
    BoomLee阅读 6,070评论 0 3
  • [The Swift Programming Language 中文版]本页包含内容: Swift提供了多种流程控...
    风林山火阅读 3,767评论 0 0
  • 控制流 [TOC] Swift提供了多种流程控制结构,包括可以多次执行任务的while循环,基于特定条件选择执行不...
    伍哥___阅读 3,496评论 0 0

友情链接更多精彩内容