zoukankan      html  css  js  c++  java
  • JavaScript的分支结构(switch,if..else)

    if else是所有编程语言里都有的功能,它使得程序具有简单的判断能力。

    在介绍if之前,让我们先来了解一下布尔值这个概念。

    布尔(Bool)值

         变量可以用来存储布尔值。布尔值的作用就是用来表示“真的假的”。所以布尔值其实只有两种取值:真(true)和假(false)。

    if else结构

    其实“if…else”的意思和字面意思是一样的,就是“如果”、“否则”。语法结构如图:

    使用if的例子

    1
    2
    3
    4
    5
    6
    7
    <script type=“text/JavaScript”>
        Var hobby = “VbScript”;
        if (hobby == “JavaScript”)
        {
            document.write("有发展");
        }
    </script>

    我们来解释一下这段代码。首先是一个“if”,它后面紧跟着一个括号,括号里则是一个条件,确切地说是一个布尔值。当条件成立的时候,这个值是true,“{}”里的语句将会得到执行;否则这个值是flase,“{}”里的语句将被忽略。

    具体到我们的例子,因为hobby 变量的值是“VbScript”,所以不做回答。如果hobby变量的值是“JavaScript”,则回答“有发展”。注意“==”这个符号,这个符号用来判断左右两边是否相等。

    如果你的爱好不是JavaScript,那么没有任何输出。如果你希望它能对这种情况做出反应,我们可以请else来帮忙,看下面的代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script type=“text/JavaScript”>
        var hobby = "JavaScript"
        if (hobby == "JavaScript")
        {
            document.write("有发展");
        }else//如果爱好不是JavaScript
        {
            document.write("没有评价……");
        }
    </script>

    上面的代码用到了“else”,它会给if添加一种“否则”的状态。当hobby不是“JavaScript”的时候,它会表明“没有评价”。

    if else嵌套

    如果想做更多的判断,可以用if的嵌套,嵌套结构图:

    看下面的代码。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <script type=“text/JavaScript”>
        var hobby = "JavaScript"
        if ( hobby == "JavaScript")
        {
            document.write("有发展");
        }
        else if ( hobby == "football")    //如果爱好是足球。
        //注意:这个if是嵌套在上一个if else中的else中的
        {
            document.write("我X");
        }
        else//既不是JavaScript又不是足球
        {
            document.write("没有评价……");
        }
    </script>

    第二个if只有在第一个if的条件不成立的时候才有机会执行。 

    Switch语句

    当有很多种选项的时候,switch比if else使用更方便。

    上一节我们已经看到,利用if else可以让程序具有基本的判断能力,而使用嵌套的if else则可以让程序对多种情况进行判断。但是当情况的种类比较多的时候,使用switch语句将更加合适。语法结构图:

    语法定义:

    switch(表达式)

    {

         case 取值1:

                  语句块1;

                  break;

          case 取值2:

                  语句块2;

                   break;

          case 取值n:

                 语句块n;

                   break;

         defaule:

                 语句块n+1;

                 break;

    }

    比如要实现如下功能的程序:输入一个学生的考试成绩,我们按照每十分一个等级将成绩分等,程序将根据成绩的等级做出不同的评价。

    很明显,用if else可以实现这样的程序,但是代码会很复杂。而如果使用switch语句,代码则会简单一些,首先来看一下思路,再把它翻译成JavaScript。

    思路:

    1. 将分数转化为特定等级以便于switch处理。

    2. 判断分数属于哪种等级。

    3. 据分数等级做出评价:例如低于60给出挂科评价。

    翻译成JavaScript就是如下代码(注意注释):

    <script type="text/JavaScript">

        //首先,我们用score变量来存储分数,假设为65

         var score = 65;

        //用分数除以10,parseInt的作用是把它转换为整数,

        //暂时不用深究,()内最后的结果为6

         switch (parseInt(score / 10)) {

        //switch开始实现判断过程,case 6得到满足

         case 0:

         case 1:

         case 2:

         case 3:

         case 4:

         case 5:

        //根据不同的等级做出不同的行为。

        //冒号后面的语句就是行为

        //case0到5的行为都是下面这个语句

         degree = "恭喜你,又挂了!";

         break;

         case 6:

         degree = "勉强及格";

         break;

         case 7:

         degree = "凑合,凑合"

         break;

         case 8:

         degree = "不错,不错";

         break;

         case 9:

         case 10:

         degree = "高手啊,佩服佩服";

         }//end of switch

     </script>

    记得在每个case所执行的语句里添加上一个break语句。为了理解break的作用,我们来看看如果没有break会怎么样:

    <script type="text/JavaScript">

         switch (parseInt(score / 10)) {

         case 0:

         case 1:

         case 2:

         case 3:

         case 4:

         case 5:

         degree = "恭喜你,又挂了!";

         case 6:

         degree = "勉强及格";

         case 7:

         degree = "凑合,凑合"

         case 8:

         degree = "8错,8错";

         case 9:

         case 10:

         degree = "高手啊,佩服佩服";

         }//end of switch

         </script>

    在上面的代码中,如果成绩是50分,那么score/10就是5,则case 5后面的语句将会得到执行,同样,case6、7等等后面的语句都会得到执行。也就是说,我们会得到 恭喜你,又挂了!勉强及格凑合,凑合8错,8错高手啊,佩服佩服 这样没有意义的结果。这就是swtitch语句的执行逻辑,当发现某个case满足后,该switch中在该case后的所有语句都会得到执行。第一个例子中的break就是为了让switch”停下来“。

  • 相关阅读:
    MatrixTraceTransform主要逻辑在transform方法中
    重写LayoutParams,读取子View自定义属性
    onLayout初始化裁剪信息
    drawChild中画阴影,裁剪出圆角
    继承ConstraintLayout
    如何创建自定义的Resource实例
    mysql优化整理(索引)
    java设计模式
    Oracle中MERGE语句的使用
    BigDecimal 转成 double
  • 原文地址:https://www.cnblogs.com/masteryin/p/10149614.html
Copyright © 2011-2022 走看看