JS的数据类型和类型判断

undefined

出现场景:

已经声明还未赋值的变量;
获取对象不存在的属性;
无返回值的函数的执行结果;
函数的参数没有传入,尝试去获取;

转型函数去操作undefined值:

Boolean=>false
Number=>NaN
String=>"undefined"

Boolean

出现场景:条件语句导致系统执行隐式类型转换;

转型函数去操作Boolean值:

Number=>1/0
String=>"true"/"false"

String

JS的数据类型和类型判断_第1张图片
类型转换.png

Number

JS的数据类型和类型判断_第2张图片
类型转换.png

Object

类型识别.png
如何判断一个对象是不是{}(空对象)

JSON.stringify({})==="{}"

数据之间的类型识别

1.typeof

JS的数据类型和类型判断_第3张图片
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.!!

你可能感兴趣的:(JS的数据类型和类型判断)