JS常用的数据类型
基本数据类型
- 数字 number
- 字符串string
- 布尔 boolean
- 空对象指针 null
- 未定义 undefined
引用数据类型
- 对象数据类型 object
普通对象:用{ } 存放数据
数组对象:用[ ] 存放数据
正则对象 - 函数数据类型 function
1. 数字类型Number
包含: 常规数字 和 NaN
1.1 NaN:not a number
NaN和任何值都不相等包括它自己(六亲不认)。
console.log(NaN==NaN) //false
console.log(12==NaN) //false
console.log('A'==NaN) //false
所以当我们要判断一个数字是不是有效数字,千万别用NaN来验证。检测数字是否为有效数字可以使用 isNaN (is not a number),如果不是数字返回true,是数字返回false。
console.log(isNaN('A')) //true
console.log(isNaN(3)) //false
console.log(isNaN('3')) //false
isNaN的机制是如果判断对象不 是数字类型,会先对对象进行Number转化成数字类型,然后再判断。
1.2 把其他类型转换数字类型
转换方法:Number([val])
a. 把字符串转为数字,只要字符串包含任意一个非有数字字符,结果都是NaN,第一个字符为小数点除外。
console.log(Number('12.5')) //12.5
console.log(Number('12.5px')) //NaN
console.log(Number('.125')) //0.125
console.log(Number('a12.5x')) //NaN
console.log(Number('')) //0
b. 布尔转换为数字
console.log(Number(true)) //1
console.log(Number(false)) //0
c. null 和 undefined
console.log(Number(null)) //0
console.log(Number(undefined)) //NaN
e. 对象转数字
引用类型数据类型转换为数字,是先把他基于toString方法转换为字符串,然后在转换为数字,当字符串转换数字时,就是上面说的方法了(只要字符串包含任意一个非有数字字符,结果都是NaN,第一个字符为小数点除外。)
console.log(Number({})) //NaN
console.log(Number({name:'10'})) //NaN
console.log(Number([]) //0
console.log(Number([12])) //12
console.log(Number([12,16])) //NaN
1.3. parseInt,parseFloat
对于字符串来说,从左到右依次查找有效数字,直到遇到非有效数字字符停止,不管后面还有没有有效数字,把找到的数字转换为数字类型。
console.log(parseInt('12.5px')) // 12
console.log(parseInt('1A2.5px')) // 1
console.log(parseInt('A12.5px')) // NaN
console.log(parseInt('true')) // NaN
console.log(parseFloat('12.5px')) // 12.5
console.log(parseFloat('1A2.5px')) // 1
console.log(parseFloat('A12.5px')) // NaN
console.log(parseFloat('false')) // NaN
2.字符串String
定义:所有用单引号、双引号包起来的都是字符串
2.1 把其他类型值转换为字符串
转换方法:[value].toString()
基本上所有值转换为字符串都是在外边加上双引号即可,除null,undefined,对象等除外。
console.log('A12.5px'.toString()) // A12.5px
console.log((NaN).toString()) // NaN
console.log((true).toString()) //true
console.log((false).toString()) //false
console.log((null).toString()) //error
console.log((undefined).toString()) //error
console.log(({name:'zs'}).toString()) //[object Object]
2.2 字符串拼接
四则运算法则中,除加法外,其余都是数学运算,加法可做为字符串拼接符。
console.log('12'+6) // 126
console.log('12'-6) // 6
console.log('12px'-6) //NaN