10-JS数据类型分类和检测
2018-07-09 本文已影响23人
我腐
JS中的数据类型
- 基本数据类型(值类型)
- number:数字
- string:字符串
- boolean:布尔
- null:空对象指针
- undefined:未定义
12 12.5 -12.5 0
'zhufeng' "珠峰" =>单双引号包裹起来的都是字符串(单双引号没有区别)
true false =>布尔类型:只有两个值
null
underfined
- 引用数据类型
- object对象数据类型
- {}普通对象
- []数组
- /^$/正则
- ...
- function函数数据类型
{name:'zfpx',age:8}
[12,23,34]
/^-?(\d|([1-9]\d+))(\.\d+)?$/
function fn(){ }
这么多的数据类型JS如何的去检测呢?(4种方法)
-
typepof : 检测数据类型的运算符
-
instanceof : 检测某个实例是否属于这个类型
-
constructor : 获取当前实例的构造器
-
Object.prototype.toString.call : 获取当前实例的所属类信息
typeof
使用 typeof 检测,返回的结果是一个字符串,字符串中包含的内容证明了值是属于什么类型的
[局限性]
1、 typeof null 不是‘null’ 而是‘object’ : 因为null虽然是一个单独的数据类型,但是它原本意思是空对象值,浏览器使用typeof检测的时候会把它按照对象来检测
2、使用typeof无法具体细分出到底是数组还是正则,因为返回的结果都是“object”
image.png
腾讯面试题:
console.log(typeof typeof [ ]);的结果是啥
结果是 string
image.png
image.png
typeof 12 => "number"
var num =13;
typeof num =>"number"
image.png
image.png
布尔
Boolean()
Boolean.png把其它数据类型的值转换成布尔类型
只有
0、NaN、空字符串、null、underfined
这五个数据值转换为布尔类型的是false,其余的都会是 true
!
!= : 不等于
image.png
叹号在JS里还有一个作用:取反
,先把值转换为布尔类型,然后再去取反
!!
在一个叹号取反的基础上再取反,取两次反相当于没有操作,但是却已经把其它类型值转换为布尔类型了,和Boolean是相同的效果
image.png
字符串
在JS中 单引号 和 双引号 包起来的都是字符串
举例子
12 是number 类型
'12' 是 string 类型
'[12,23]' 也是string 类型
常用方法:
charAt 、 charCodeAt
substr 、 substring、 slice
toUpperCase、toLowerCase
indexOf 、 lastIndexOf
split
replace
match
...
number 数字
0 12 -11 12.5 ,JS中多增加了一个number类型的数据:
image.pngNaN
typeof NaN ->'number'
image.png
NaN