js数据类型的判断

js数据类型的判断

1、js数据类型有哪些?
2、typeof可以判断出哪些数据类型?
3、数组的数据类型如何判断?
4、有没有一个万能的判断数据类型的方法?

1、js数据类型有哪些?

  js的数据类型有9种:数值(Number)、字符串(String)、布尔值(Boolean)、null、undefined、数组(Array)、对象(Object)、Map、Set。

2、typeof可以判断出哪些数据类型?

  typeof运算符可以准确地判断出数值(Number)、字符串(String)、布尔值(Boolean)、undefined数据类型;对于null、数组(Array)、对象(Object)、Map、Set不能准确地进行判断,typeof对它们的返回值均为object。

  • 下面代码中>表示输入的意思,<表示输出的结果。
> typeof 1
< "number"

> typeof "hello"
< "string"

> typeof true
< "boolean"

//一个未赋值的变量a
> typeof a
< "undefined"

..............分割线.................

> typeof null
< "object"

> typeof [1, 2, 3]
< "object"

> typeof {firstname:'John', lastname: 'Xu'}
< "object"

> typeof new Set()
< "object"

> typeof new Map()
< "object"

3、数组的数据类型如何判断?

  typeof不能对数组进行准确地判断,其返回结果为object。为了对数组进行准确判断,可以使用instanceof、Array.isArray()、Object.prototype.toString.call()方法进行判断。

> [1, 2, 3] instanceof Array
< true

> Array.isArray([1, 2, 3])
< true

> Object.prototype.toString.call([1, 2, 3])
< "[object Array]"

4、有没有一个万能的判断数据类型的方法?

有,那就是Object.prototype.toString.call()方法。

> Object.prototype.toString.call(1)
< "[object Number]"

> Object.prototype.toString.call('hello')
< "[object String]"

> Object.prototype.toString.call(true)
< "[object Boolean]"

>Object.prototype.toString.call(null)
<"[object Null]"

> Object.prototype.toString.call(undefined)
< "[object Undefined]"

> Object.prototype.toString.call([1, 2, 3])
< "[object Array]"

> Object.prototype.toString.call({firstname:'John', lastname: 'Xu'})
< "[object Object]"

> Object.prototype.toString.call(new Set())
< "[object Set]"

> Object.prototype.toString.call(new Map())
< "[object Map]"

5、数据类型判断的一些简单方法

有些判断方法虽然不能对所有的数据类型都作出准确的判断,但是它可以针对某些数据类型进行判断。

5.1、利用toString()方法判断对象数据类型

这里写图片描述
可以看出调用对象的toString()方法会返回[object Object],基于此可以快速准确地判断对象数据类型。

猜你喜欢

转载自blog.csdn.net/xum222222/article/details/80446535