js中的特数值-null-undefined-NaN

一、补充

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

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

    • 特殊之处:

      1. 是一个数值型数据,但不是一个数字
      2. NaN不等于任何值,和任何数据都不相等,NaN不等于NaN
    • 检测方法:isNaN(要检测的数据)

      • true:检测是否为NaN或是否能转为NaN
      • false:检测结果不是NaN或不能转成NaN
      
          // 计算机认为每一个NaN都是非法运算的结果,每一个NaN的来源都不一样
          console.log(NaN == NaN);    //false
      
      
          // 非法的运算会得到NaN,但不知道这个运算是否为非法运算
          // js提供了一个检测是否为NaN的方法
          console.log(isNaN(NaN));    //true
          console.log(isNaN(123));    //false
      
          console.log(isNaN("hello"));    //true
          // 还会发生隐式类型的转换
          // 场景:是否可以转为数值,"hello"无法转为数值,所以是非法运算结果为true
      
          console.log(isNaN("123"));    //false
          // 可以转为数值,数值不是NaN,所以结果为false
      
          console.log(isNaN("123hello"));    //true
          //是严格转换
      
          console.log(isNaN("123.4"));    //false
          //可以识别小数点,可以转为数值
      
      
  • undefined- 未赋值 类型是undefined null- 空 类型是object对象

    • 特殊1:undefined 和 null 在关系类型运算时,两边都被隐式类型转换成了一致的数据 0/false
    • 特殊点2:undefined被转换为NaN,null被转换为0
  • 如何判断三大特殊的值分别是谁

    • NaN可以使用isNaN判断
      • isNaN(要判断的值)
           //隐式转换
          console.log(undefined == null);     //true
          console.log(undefined == NaN);      //false,有NaN肯定不相等
          console.log(null == NaN);           //false
          // 三个等号必然不相等,类型肯定不相等
      
      
          //强制转换
          console.log(Number(undefined)); //NaN
          console.log(Number(null));      //0
      
      
          // 特殊点1:undefined 和 null 在关系类型运算时,两边都被隐式类型转换成了一致的数据 0/false
          // 特殊点2:undefined被转换为NaN,null被转换为0
      
          console.log(undefined == 0);    //f
          console.log(null == 0);         //f
      
          // 如何判断是哪一个特殊的值
          // 判断undefined和null:
              // typeof()
              //typeof undefined得到undefined
              //typeof null得到object
      
          // 如何判断null和真正的对象
          // 真正的对象的明显标志:任何两个对象都不相等,只要相等了,就是只有一个对象
          // null是可以直接等于自己null
          // console.log(null == null);      //t 
      
    • undefined可以使用typeof判断
      • typeof 要判断的值或变量
    • null需要配合typeof和关系运算符判断
      • typeof 要判断的值或变量 === "object"
      • 还需要要判断的值或变量 == null
posted @ 2020-04-26 22:50  YY1028  阅读(362)  评论(0编辑  收藏  举报