js数据类型
值类型(基本数据类型)
string number boolean null undefined
引用数据类型
object array function
计算机typeof() 返回的数据类型是按照机器码的后三位来决定的
一般基本数据类型都是正常返回,但是NULL 值是一个特殊的
因为他的机器存储码是 0000…000 所以他的返回类型并不是它本身 他会返回一个Object
typeof()检测引用数据类型
一般来说,会返回两种数据类型
1.object
2. function
3.
为什么会这样
1.因为在js设计语言之初,内置了一个方法 call
2.检测时会判断这个引用类型上,是否有这个call方法 如果有就返回function 反之object
instanceof 检测
instanceof 返回布尔值
console ([] instanceof Array) // true
可以理解为:
根据原型链 来检测 a 是不是 b 实例化的 是 true 否 继续向上推导
总结
typeof和instanceof都是用来检测变量类型的操作符,二者的区别在于
typeof是判断变量是什么基本类型的; instanceof是判断对象到底是什么类型的
typeof or instanceof 都不能完美帮我们判断出类型,所以我们需要一个兼容两者的方法:
跨原型链调用toString()方法:Object.prototype.toString(),可以解决跨框架问题。
这是对象的一个原生原型扩展函数,可以用来精确的区分数据类型