JS的数据类型和类型判断

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 运算符深入剖析

数据之间的类型转换

1.==

2.if

3.+

4.逻辑运算符

5.!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容