javasrcipt判断数据类型

57 阅读1分钟

javasrcipt判断数据类型

可以用typeof、instanceof、===判断

typeof

可以判断undefined、数值、字符串、布尔,但返回的数据类型会变成字符串形式

不能区分 null、object、array数据类型

eg: let a
    console.log(a, typeof a) // 输出对应的 undefined, 'undefined'
    let b = 1
    console.log(typeof b) // 输出对应的 'number'
    let d = 'abc' - 1 || 'abc' * 1 || 'abc' / 1 || 'abc' % 1
    console.log(typeof d) // 输出对应的 'number' 
    let c = 'abc' || 'abc' + 1
    console.log(typeof b) // 输出对应的 'string'
    let e = (() => {})
    console.log(typeof e) // 输出对应的 'function'
    let f = [1,2,3] || {a: 1} || null
    console.log(typeof f) // 输出对应的 'object'

instanceof (实例)

判断对象的具体类型(判断某个是否是某个的实例)

eg: let obj = {
      arr: [1, 'aa', console.log],
      fun: function() {<br/>
         console.log('function')
      }
    }
    console.log(obj instanceof Object, obj instanceof Array) // 输出 true, false
    console.log(obj.arr instanceof Object, obj.arr instanceof Array) // 输出 true, true
    console.log(obj.fun instanceof Object, obj.fun instanceof Function) // 输出 true, true
    console.log(typeof obj.fun === 'function') // 输出 true
    console.log(typeof obj.arr[2] === 'function') // 输出 true

===

判断undefied、null

eg: let a
        console.log(a === undefined) // 输出 true
        let a = null
        console.log(a === null) // 输出 true