typeof和instanceof都是js中的运算符,和js中的其他运算符一样(+ - * /)来完成相关的运算,主要是用来对数据类型进行判断。
typeof 'hello' // 'string'
typeof 312 // 'number'
typeof NaN // 'number'
typeof true // 'boolean'
typeof undefined // 'undefined'
typeof null // 'object'
typeof function() {} // 'function'
typeof [1, 2, 3] // 'object'
typeof {name: 'demo'} // 'object'
{name: 'demo'} instanceof Object // true
{name: 'demo'} instanceof Array // false
[1, 2, 3] instanceof Object // true
[1, 2, 3] instanceof Array // true
function() {} instanceof Object // true
function() {} instanceof Function // true
typeof
1.对基本数据类型进行判断,返回的是基本数据类型对应的字符串,
特殊的,typeof null === 'object'
2.对引用数据类型进行判断,返回的是'object'字符串,
特殊的,typeof function(){} === 'function'
注意:使用typeof无法准确的判断数组和对象的数据类型,考虑使用instanceof
[1, 2, 3] instanceof Array // true
{name: 'demo'} instanceof Array // false
instanceof
用来判断某个构造函数的prototype(原型对象)是否在所判断的对象的原型链上,简单说就是判断一个引用类型的变量具体是不是某种类型的对象。
{} instanceof Object // true
[] instanceof Array // true
function(){} instanceof Function // true