数据类型简介和检测
JavaScript中两大数据类型
基本数据类型 : Number String Boolean Undefined Null
复杂数据类型 : Object Array Function RedExp Date Map Set Symbol等等
typeof运算符
使用typeof运算符可以检测值和或者变量的类型
typeof的返回值有Undefined、Null、Boolean、Number、String、Object
typeof的使用方法有两种:typeof 变量 和 typeof(变量)
5种基本数据类型的typeof检测结果
- 数字类型 number
- 字符串类型 string
- 布尔类型 boolean
- undefined类型 undefined
- null类型 onject
Number类型
所有数字不分大小 不分整数浮点数 不分 正数负数 都是数字类型
小数中的0可以省略
介于0和1之间的小数 可以不书写0
.5 === 0.5
科学计数法
较大数或者较小数 可以写成科学计数法
3e8 3e-4
不同进制的数字
二进制数值用0b开头
0b10 === 2
八进制数值以0开头
017 === 15
十六进制数字 以 0x 开头
oxf === 15
一个特殊的数字型值 NaN
NaN是 not a number 的意思 但他是一个数字类型的值
typeof NaN 是 number
0除以0的结果解释NaN 事实上 在数字运算中 若结果不能得到数字 其结果往往都是NaN
NaN有一个奇怪的性质:不自等
NaN !==NaN
String类型
字符串要用引号包裹 双引号或者单引号均可
字符串的拼接
加号可以用来拼接多个字符串
还有一个concat()
字符串和变量的拼接
要将一个变量的值插入到字符串中 要"斩断链接"
let c = ‘zbc’;
let str = ‘a’+c;
es6中可以使用反引号语法
非零/0 是Infinity
字符串的length属性
length是属性 表示字符串的长度
字符串的常用方法
charAt() : 表示指定位置字符
"123".charAt(0) //1
substring():提取子串
substring(a,b) 表示从a开始到b结束 (不包括b处)的子串
如果省略了第二个参数 返回的子串会一直到字符串的结尾
如果a>b 则会自动调整为小的在b在前
但是 参数不能为负数
substr():提取子串
substr(a,b)将得到从开始的长度为b的子串
如果省略了第二个参数 返回的子串会一直到字符串的结尾
a可以是负数 表示倒数的位置
slice(): 提取子串
slice(a,c) 的参数a可以使负数 但是a必须小于b 否则返回 ‘’
从a开始 到b结束 (不包括b)
如果省略了第二个参数 返回的子串会一直到字符串的结尾
toUpperCase():将字符串变为大写
toLowerCase():将字符串变为小写
indexOf(): 检索字符串
返回要检索的字符串在本字符串中的首次出现的位置 如果没有 返回-1
Boolean类型
只有两个: true 和false
Undefined类型
一个没有被赋值的变量的默认值是undefined 而 undefined 的类型也是 undefined
既是一个值 又是一种类型 这种类型只有他自己一个值
变量声明提升的情况
变量声明提升的时候变量的值也是undefined
null类型
null表示空 是空对象
当我们需要讲对象销毁 数组销毁 或者 删除事件监听的时候 通常将他们设置为null
类型和typeof结果并不总是一一对应 比如数组用typef检测结果也是object
typeof null //object
数据类型转换
其他值->数字
使用Number函数
字符串->数字
Number(’ ') = 0
纯数字字符串能够变位数字 不是纯数字的字符串转变为NaN
布尔值->数字
true变为1 false变为0
undefined和null->数字
undefined变为NaN
null变为0
使用parseInt()函数 (转变为整数)
将自动截掉第一个非数字字符之后的是所有字符
如果不是数字开头 则直接转为NaN
不四舍五入
使用parseFloat()函数 (转变为浮点数)
将自动截掉第一个非数字字符之后的是所有字符
如果不是数字开头 则直接转为NaN
不四舍五入
其他值->字符串
使用String()函数
变为长的相同的字符串
科学计数法和非十进制数字会转为10进制的值
使用toString()函数
其他值->布尔值
使用Boolean()函数
将空字符串、undefined、null、NaN、0转换成false,其他都为true
数字->布尔值
0 和NaN转为false 其他都转为true
字符串->布尔值
空转为false 其他转为true
undefined和null -> 布尔值
都是false