判断js数据类型的方式

62 阅读1分钟

typeof

适用场景

typeof操作符可以准确判断一个变量是否为下面几个原始类型:

复制代码
typeof 'ConardLi'  // string
typeof 123  // number
typeof true  // boolean
typeof Symbol()  // symbol
typeof undefined  // undefined

你还可以用它来判断函数类型:

typeof function(){}  // function

不适用场景

当你用typeof来判断引用类型时似乎显得有些乏力了:

typeof [] // object
typeof {} // object
typeof new Date() // object
typeof /^\d*$/; // object

除函数外所有的引用类型都会被判定为object

另外typeof null === 'object'也会让人感到头痛,这是在JavaScript初版就流传下来的bug,后面由于修改会造成大量的兼容问题就一直没有被修复...

instanceof

instanceof操作符可以帮助我们判断引用类型具体是什么类型的对象:

[] instanceof Array // true
new Date() instanceof Date // true
new RegExp() instanceof RegExp // true