JS中数据类型分类

一、基本数据类型
1、数字:number
2、字符串:string
3、布尔:boolean
4、空对象指针:null
5、未定义:undefined
二、引用数据类型
1、对象数据类型object
(1)普通数据对象{}
(2)数组对象[]
(3)正则对象/^...?$/
(4)函数对象 Math
....
2、函数数据类型 function

三、NaN和任何值包括子级都不相等:NaN!=NaN;所以不能用相等的方式判断是否为有效数字
isNaN:检测一个值是否为非有效数字,如果不是有效数字返回true,如果是有效数字返回false
console.log(isNaN(10)) => false
console.log(isNaN('AA')) => true Number('AA') =>NaN
console.log(isNaN('10')) => false Number('10') =>10
在使用isNaN检测的时候,首先验证被检测的值是否为数字类型,如果不是,先基于Number()这个类型,把值转换成数字类型,再进行检测

四、把其他类型转换成Number
1、布尔转换成数字
console.log(Number(true)) => 1
console.log(Number(false)) => 0
console.log(isNaN(true)) => false
console.log(isNaN(false)) => false

2、null => 0 undefined => NaN
console.log(Number(null)) => 0
console.log(Number(undefined)) => NaN
console.log(isNaN(null)) => false
console.log(isNaN(undefined)) => true
3、把引用数据类型转换为Number,先把他基于toString方法转为字符串,然后再转成Number
console.log(Number({name:'abc'})) => NaN
// ({name:'abc'}).toString() => "[object Object]" => NaN
console.log(Number({})) => NaN
// ({}).toString() => "[object Object]" => NaN
console.log(Number([])) => 0
// ([]).toString() => '' => 0
console.log(Number([12])) => 12
// ([12]).toString() => '12' => 12
console.log(Number([12,23])) => NaN
([12,23]).toString() => '12,23' => NaN

4、parseInt() parseFloat(): 也是转换为数字的方法,对于字符串,他是从左到右依次查找有效数字,直到遇到非有效数字字符为止(不管后面是否还有有效数字,都不再查找),返回当前查找到的有效数字。
let str = '12.5px'
console.log(Number(str)) => NaN
console.log(parseInt(str)) => 12
console.log(parseFloat(str)) => 12.5
console.log(parseFloat('width:12.5px')) => NaN
5、== 进行比较

五、字符串string数据类型
1、其他类型转换成字符串
[val].toString()
let a = 12
a.toString() => "12"
(true).toString() => "true"
null、undefined禁止直接toString() 报语法错误
(null).toString() => Uncaught TypeError: Cannot read property 'toString' of null at :1:8
普通对象.toString() 的结果是 "[object Object]",=> Object.prototype.toString()不是转换成字符串的,而是用来检测数据类型的
({name:'a'}).toString() => "[object Object]"
2、字符串拼接转成字符串
console.log('10'+10) => 1010
let a = 10 + null + true + [] + undefined + "珠峰" + null + [] + 10 + false
console.log(a) => 11undefined珠峰null10false
let ab = 10 + null + true + [1] + undefined + "珠峰" + null + [] + 10 + false
console.log(ab) => 111undefined珠峰null10false

六、布尔数据类型boolean:true/false
其他类型转为布尔类型Boolean([val]), !/!! ,判断条件
只有null、''、0,undefined、NaN转成false,其他都是true
console.log(Boolean([])) => true
console.log(Boolean('')) => false
console.log(Boolean(' ')) => true
console.log(Boolean(undefined)) => false
console.log(Boolean(null)) => false
console.log(Boolean(NaN)) => false
console.log(Boolean(0)) => false
!:取反(先转成布尔,再取法)
console.log(!1) => false
console.log(!!1) => true
七、null、undefined 都代表没有
null:意料之中(一般开始不知道值,我么先收到设置为null,后续再赋操作值)
let n = null; let m = 0;一般最好用null作为初始空值,因为0不是空值,他在栈内存中有自己的存储空间(占了位置)
undefined:意料之外
let num; // 创建一个变量没有赋值,默认值是undefined

八、引用数据类型
1、普通对象
let person = {
name:'武松',
age:30,
10:100
}
// 获取属性名对应属性值的方式
-对象.属性名 属性名是字符串 ,属性名是数字不能用点语法
-对象[属性名] 属性名是数字或者字符串格式
-如果当前属性名不存在,则默认值是undefined
console.log(person.name) => 武松
console.log(person['age']) => 30
console.log(person.sex) => undefined
console.log(person[10]) => 100
console.log(person.10) => 报预发错误
属性删除
-真删除:把属性删除
delete person[1]
-假删除:属性还在,值删除
person.name = null

九、堆栈


屏幕快照 2020-02-03 下午4.19.46.png

你可能感兴趣的:(JS中数据类型分类)