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