undefined
出现场景:
已经声明还未赋值的变量;
获取对象不存在的属性;
无返回值的函数的执行结果;
函数的参数没有传入,尝试去获取;
转型函数去操作undefined值:
Boolean=>false
Number=>NaN
String=>"undefined"
Boolean
出现场景:条件语句导致系统执行隐式类型转换;
转型函数去操作Boolean值:
Number=>1/0
String=>"true"/"false"
String
类型转换.png
Number
类型转换.png
Object
类型识别.png
如何判断一个对象是不是{}(空对象)
JSON.stringify({})==="{}"
数据之间的类型识别
1.typeof
image.png
typeof null返回object
typeof 无法识别对象具体类型,都返回object,除了function返回Function
2. Object.prototype.toString.call(对象)
var arr = [];
console.log(Object.prototype.toString.call(arr)) //"[object Array]"
可以识别标准类型及内置对象类型
不能识别自定义类型
3.constructor
console.log([].constructor===Array)//true
console.log([].constructor.name==="Array")//true
constructor属性可以在实例上访问到,但其实constructor属于原型对象,是通过[].__proto__.constrctor
访问到的。
4.instanceof
可以判断内置对象
可以判断自定义类型
instanceof用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性。
在另一篇文章里面看到对于instanceof原理的解释非常好,这里引用一下,JavaScript instanceof 运算符深入剖析