第三章 数据类型
1 JS 中数据类型的划分
1.1 原始类型
- Number 数值
- String 字符串
- Boolean 布尔值 true(真)/false(假)
- Null 空
- Undefind 未定义
1.2 对象类型
- Array
- Object
- Function
- RegExp
- Error
- Math
- Date
- ..........
2 数据类型检测
typeof()
3 原始类型介绍
3.1 number 数值类型
① 整型 (整数)
- 十进制表示
- 八进制表示
010
(不推荐) - 十六进制表示
0xf90
② 浮点 (小数)
- 直接写小数
- 科学计数法,表示较大的数;
2.3e3
- 浮点的精度问题(十进制小数转为二进制小数,大部分无法精确转换;整数不存在这个问题)
③ JS中数值的范围
- 5e324 ~ 1.7976931348623157e+308
- 如果超过范围,会表示为 Infinity 或者 -Infinity
④ 特殊的数值 NaN
- NaN是number类型,是一个数值
- 特点1:NaN与任何数进行任何运算结果都是NaN
- 特点2:NaN与任何数都不相等,包括自己
⑤ 数值相关的运算符
+ - * / %
⑥相关函数
isNaN() 判断数据是否是NaN, 是返回true,否则返回false
isFinite() 判断数据是否在范围内,在范围内返回true,否则false
3.2 string 字符串类型
① 定义字符串
- 使用单引号或者双引号,没有区别
- 单引号不要嵌套单引号;双引号,同理; 非要嵌套对引号进行转义
\'
\"
② 转义字符
\n 表示换行符
\r 表示回车符
\t 水平制表符 tab
\' 单引号
\" 双引号
\\ 反斜杠
\uXXXX 四位十六进制表示unicode字符串
\xXX 两位十六进制表示拉丁字符
③ 字符串连接符
+
3.3 boolean 布尔值
布尔值表示 真或假 开或关 是或否。
有 true 和 false 两个值
3.4 null 和 undefined
null
表示没有对象,即该处不应该有值:
1) 作为函数的参数,表示该函数的参数不是对象。
2) 作为对象原型链的终点。
3) 获取 DOM 获取不到的时候。
undefined
表示缺少值,即此处应该有值,但没有定义:
1)定义了变量没有给值,显示 undefined。
1)定义了形参,没有传实参,显示 undefined。
2)对象属性名不存在时,显示 undefined。
3)函数没有写返回值,即没有写return,拿到的是 undefined。
4)写了return,但没有赋值,拿到的是 undefined。
4 数据类型的转换
4.1 强制转换(显示转换)
① 转换函数
Number() 把其他类型数据转为Number类型
parseInt()
parseFloat()
String() 把其他类型数据,转为Stirng
Boolean() 把其他类型的数据转为布尔值
② 其他类型数据转为 Number 规则
其他类型数据转为数值类, 使用Number()函数
字符串: 纯数字字符串转为对应数字、空字符串转为0, 其他都是NaN
布尔值: true->1 false->0
null: 转为 0
undefined: 转为 NaN
其他类型数据转为数值类, 使用parseInt()和parseFloat函数
用于从字符串中提取数字,其他类型的数据都是转为NaN
以数字开头或者纯数字,可用从字符串中提取数字部分;
空字符转为NaN
parseInt获取小数点之后,提取整数;parseFloat提取浮点数
③ 其他类型数据转为 String 规则
数字转为字符串: 原样转换, 十六机制和科学计数法表示的数字转换后是十进制的数字
其他类型,原样转换输出
④ 其他类型数据转为 Boolean 规则
数字转为布尔值: 0转为false;其他都是true
字符串转为布尔值: 空字符串转为false, 其他都是true
null 转为 flase
undefined 转为 false
4.2 自动转换(隐式转换)
JavaScript 是弱类型语言,所以可以进行自动类型转换。
在某种运算环境下,数据自动转换类型:
数值的运算环境, 表达式中有数字运算符: + - * / % ++ --
字符串的运算环境, 表达式中有+,且一边是字符串, 另外边的数据肯定自动转为字符串
布尔值的运算环境, 条件判断的时候 if (数据) 数据会自动转为布尔值
自动类型转换的规则同强制类型转换的规则是一致的。