js基础之区分undefined,null,NAN和数据类型

346 阅读3分钟

一.区分undefined,null,NAN

1.undefined代表没有赋值(这里的没赋值,是指我们编码人员没有赋值)

2.null代表赋值了,但是这个值很特殊,为null

什么时候给变量赋值为null呢?

  • 1).初始化的时候:var a = null a指向一个对象,但对象此时还没有确定
  • 2).使用完毕的时候:a = null 让a指向的对象为垃圾对象

3.NAN全称not a number

  • 1).NAN属于number类型的一个值,
  • 2).NAN不与任何值相等,包括自身。
  • 3).什么时候出现NAN?
    • 1.转换数字时本身就没办法往数字转 console.log(parseint(abc123)) // NAN
    • 2.undefined参与数学运算时就会显示NAN console.log(1+undefined) // NAN undefined 参与数学计算时就会显示NAN

二.数据类型​----数据类型分为两大类

1.基本数据类型

Number:任意数值1 2 3 4 5 6 7
String:任意文本 'zunzun'  'quanquan' 'kangkang'
Boolean:true/false
Undefined:undefined
null:null

2.对象(引用)类型

Object:任意对象(一般对象){}
Array:一种特别的对象[](1.可以通过下标取值 2.内部数据有序)
Function:一种特别的对象类型(可执行)
备注:Object Array Function其实不是并列关系 

三.数据类型的判断typeof instanceof ===

1.typeof

  • 1.可以判断:数值,字符串,布尔值,undefined,function
  • 2.不能区分:null与对象,null与数组,数组与对象,因为返回的都是object
  • 3.对于typeof
    • 3.1 一个不正确(对于null):typeof null 的结果是object
    • 3.2 一个不精确(对于数组):typeof [] 的结果是object
    • 3.3 一个没问题 (对于一般对象):typeof{} 的结果是object
      • 以上三种类型两两组合都不能用typeof进行区分
      • 备注:typeof的返回值是该类型的字符串名称,且首字母小写。
   举例:
         //判断数值
         var b = 1
         console.log(typeof b) // 黑色字符串的 number
         //判断字符串
         var c = 'zunzun'
         console.log(typeof c)  //黑色字符串的 string
         console.log(typeof c === 'string') //true
         console.log(typeof c === 'String') //false 原因是typeof返回的是该类型的字符串名称,且首字母小写
         //判断布尔值
         var d = false
         console.log(typeof d)  //黑色字符串的 boolean
         console.log(typeof d === 'boolean') //true
         console.log(typeof d === 'Boolean') //false
         //判断function
         var e = function () {}
         console.log(typeof e) // 黑色字符串的 function
         console.log(typeof e === 'function')  //true
         console.log(typeof e === 'Function')  //false
          //判断undefined
         var a
         console.log(a) // 灰色代表数据类型  undefined类型表示未赋值
         console.log(typeof a) //黑色代表字符串 undefined 
         console.log('abc')  // 黑色字符串的 abc
         console.log(typeof a==='undefined') //true undefined的值
         console.log(typeof a=='undefined') //true undefined的值
         console.log(typeof a===undefined) //false  undefined类型
         console.log(typeof a==undefined) //false  undefined类型
         //判断null   数组[]  对象 {}
         var f = null
         console.log(typeof f)  //黑色字符串的 object  是由于js底层'缺陷'造成的
         console.log(typeof null)  //黑色字符串的  object
         console.log(typeof [])    //黑色字符串的  object
         console.log(typeof [])    //黑色字符串的  object     

2.instanceof

  • 1.专门用来判断对象类型的具体类型,如:Object Array Function
  • 2.A instanceof B ==> 判断A是否是B的实例对象(即:B是构造函数名 注意:构造函数名首字母大写)
        //判断a1是不是由Object缔造的
        var a1 = {name:'zunzun',age:1.3}
        console.log(a1 instanceof Object)  //true  此处需注意构造函数名首字母需大写
         //判断a2是不是由Function缔造的
         var a2 = function () {
          console.log(1)
        }
        console.log(a2 instanceof Function) //true    
        //判断a3是不是由Array缔造的      
        var a3 = [1,2,3,4,5]
        console.log(a3 instanceof Array)  //true
画重点:大公司面试题 (想进大厂的必备技能)
        var b1 = {
          b2:[1,'zunzun',console.log],
          b3:function () {
            console.log('我是b3')
          }
        }
        console.log(b1 instanceof Object)  // true
        console.log(b1.b2 instanceof Array) //true
        console.log(b1.b3 instanceof Function) //true
        console.log(typeof b1.b2[2])  //function 
        console.log(typeof b1.b2[2]('zunzun'))  //两个输出 1.'zunzun'    2.'undefined' 
        console.log(typeof console.log('zunzun')) //这里先打印出zunzun 然后再打印console.log的返回值 返回值为undefined然后再判断undefined的类型
        console.log(b1.b2[2]('quaner'))  //quaner   灰色 undefined
        console.log(b1.b3())  // 我是b3  灰色undefined 
//举例一:
        function demo1() {
        
        }
        var a = demo1()
        console.log(a) //灰色 undefined类型
        //备注:函数体有return 返回值为return的内容 函数体没有return返回值为undefined
        function demo2() {
          console.log(1)
        }
     var b = demo2()
     console.log(b)  //显示两个  1  undefined
//举例二:
     var s = console.log(2)
     console.log(s)   //控制台显示两个  2  undefined

3. 使用===判断(全等判断:不仅类型要一致而且值也要一致)

  • 1.可以判断:undefined 和null
  • 备注:因为undefined和null 的值只有一个
 console.log(undefined === undefined) //true
 console.log(null === null) //true