js中的三大特殊数据:undefined,null,NaN及逻辑分支(选择结构,分支结构)

1.js中的三大特殊数据:undefined,null,NaN

  • NaN:非法的数值运算得到的结果

    • 特殊之处:

      1. 是一个数值型的数据,但是不是一个数字

      2. NaN不等于任何值,和任何数据都不相等,NaN不等于NaN

    • 检测方法:isNaN(要检测的数据)

      • true:检测结果为 NaN 或能转成 NaN

      • false:检测结果不是 NaN 或不能转成 NaN

  • undefined是:未赋值,类型是undefined;null是:空,类型是object

    • 特殊1:undefined和null在关系运算符两边隐式类型转换后,得到了一致的数据

    • 特殊2:undefined被Number转成NaN,null被Number转成0

  • 如何判断三大特殊的值,分别是谁?

    • NaN可以使用isNaN()来判断

      • isNaN(要判断的值或变量);

          var a = NaN;
         console.log(isNaN(a)); // 结果是布尔值:true为是的,false为不是
    • undefined可以使用typeof判断

      • typeof 要判断的值或变量

          var b = undefined;
         console.log( (typeof b) === "undefined" );// 结果是布尔值:true为是的,false为不是
    • null需要配合typeof和关系运算符判断

      • typeof 要判断的值或变量 === "object"

          var c = null;
         console.log( (typeof c) === "object" );
      • 还需要( && )

      • 要判断的值或变量 == null

          console.log(c === null);

二、逻辑分支(选择结构,分支结构)

  1. 程序的三大结构

  • 顺序结构

  • 分支结构

  • 循环结构 

    1. 分支语句

    • 分支和循环结构,需要配合一些专用代码才能实现,专用代码叫:语句

    • if:单分支

      • if(条件){执行语句}

    • if else:双分支

      • if(条件){条件为true时,要执行的语句}else{条件为false时,要执行的语句}

      • 分支的嵌套(双分支模拟的多分支)

        • 在执行体内,可以继续写其他分支

        • if(条件1){}else if(条件2){}else if(条件3){}else......

    • if的小括号里面也会发生隐式类型转换规则

      • 规则:其他转布尔

        • 数值转布尔:非0为true,0为false

        • 字符转布尔:非空字符,为true,空字符,为false

        • 对象转布尔:对象为true

        • 数组转布尔:数组为true

        • 函数转布尔:函数为true

        • 特殊数据转布尔:undefined,NaN,null都为false

      • switch:多分支

        • 语法:

          var n = 2;
          var msg = "";
          switch(Number(n)){
             case 0:
                 msg = "星期日";
                 break;
             case 1:
                 msg = "星期一";
                 break;
             ...
             default:
                 msg = "你输入的数字不对,请输入0~6之间的数字";
          }
          console.log(msg);
        • 规则:

          • 当要判断的值是固定的数据时,选择使用switch

            • 如果要判断的值是范围时,选择使用if-else

          • switch的case判断,不存在隐式类型转换

            • 某些情况下,需要根据场景,选择是否需要主动转换

          • 如果你不管上面的使用建议,非要使用switch判断范围,注定要多掉点头发

            • 使用switch判断范围

            var cj = 45;
            switch( true ){
               case cj<60:
                   console.log("不及格");
                   break;
               case cj>=60 && cj<70:
                   console.log("及格");
                   break;
               default:
                   console.log("以上case都没执行");
            }
        • 某些问题需要利用switch的case的穿透特性,解决

猜你喜欢

转载自www.cnblogs.com/dajia0809/p/12755344.html