1.typeof
typeof返回一个字符串,表示未经计算的操作数的类型(对象或原始值的表达式)
typeof 1 //number
typeof '1'//string
typeof undefined //undefined
typeof true //boolean
typeof Symbol()//symbol
typeof null //object
typeof [] //object 这里一定要注意,数组判断出来的是object
typeof {} //object
typeof console //object
typeof console.log // function
如果我们要判断一个变量是否存在,我们不能这样:if(a),这样会报错,可以使用typeof,看是否返回undefined
2.instanceof
instanceof用于检测构造函数的prototype属性是否出现在某个实例对象的原型链上,返回值为Boolean类型
关于实现原理,可以看我专栏中JS手写篇里有实现instanceof函数
3.区别
1.instanceof返回值为一个Boolean类型,typeof返回值为字符串
2.instanceof可以准确的判断一个复杂引用的数据类型,但是不能判断基础数据类型
3.typeof虽然可以判断除null以外的基础数据类型,引用数据类型除function以外,其他的也无法判断
4.拓展
若要判断数据类型,可以采用Object.prototype.toString(),统一返回[object Xxx]格式的字符串
同时,还可以自己写一个判断数据类型的函数,用于类型判断!可以参照我的专栏中JS手写篇中的相关文章