js 判断数据类型
首先来提问一个: typeof 是否能正确判断类型? 答案是:不可以,因为由于历史原因,在判断原始类型时, typeof null 会等于 object 。而且对于对象来说,除了函数,都会转换成 object 。例子如下: typeof 1 // 'number' typeof "1" // 'string' typeof null // typeof [] // 'object' typeof {} // 'object' typeof window.alert // 'function' 再来提问一个, instanceof 是否能正确判断类型? 答案是:还是不可以,虽然 instanceof 是通过原型链来判断的,但是对于对象来说, Array 也会被转换成 Object ,而且也不能区分基本类型 string 和 boolean 。例如: function Func() {} const func = new Func() console.log(func instanceof Func) // true const obj = {} const arr = [] obj instanceof Object // true arr instanceof Object // true arr instanceof Array // true const str = "abc"