一、数据类型的转换
- 原因
- 给的数据不是需要的类型,此时需要转成当前程序所需的数据类型,再进行运算
- 方法
-
强制转换(显式转换,主动转换)
-
字符转数值
parseInt(要转换的数据或变量)
- 从左向右依次检测,遇到第一个非数字的字符,停止转换
- 忽略小数点后所有的内容,原理是将小数点识别为了非数字的字符
- 如果检测的第一位就是非数字,NaN
NaN:- 是数值型数据,但是不是数字,意思是非法的数值运算结果
parseFloat(要转换的数据或变量)
- 从左向右依次检测,遇到第一个非数字的字符,停止转换
- 可以识别小数点
- 如果第一位就是非数字,直接NaN
Math.round(要转换的数据或变量)
- Math.round做取整的,取最近的整数,顺便可以实现字符转数值
- 严格转换:只要出现非数字,NaN
Number(要转换的数据或变量)
- 系统内置的构造函数,用来创建数值对象,顺便可以实现字符转数值
- 严格转换:只要出现非数字,直接NaN
-
数值转字符
数值变量.toString()
- 直接转换
数值变量.toFixed(n)
- 保留n位小数
-
-
隐式转换(被动转换,即自动转换)
- 场景和规则
- 算数运算
+
号两边只要出现字符,结果必然为字符-
,*
,/
,%
的结果必然是数值
- 关系运算
>
,<
,>=
,<=
,!=
,==
两边只要出现数值,那么另一边也会转成数值,进行比较
-
二、数据的运算符
-
算数运算符
+
加号,加法- 当加号两边都是数值型数据时,是数学的加法运算
- 任意一边是字符,那么结果就是将两个数据直接组合
-
,*
,/
,%
- 正常的数学运算
- 如果运算符的两边不是数值,会默认转成数值,然后进行运算
- 如果某个数据不能转成数值,直接
NaN
-
关系运算符 - 该运算符的结果是布尔值
>
,<
,>=
,<=
- 只要有一边出现数值,那么就使用数值的比较规则
- 如果都是字符,会使用字符的比较规则:逐位比较,得到结果,就停止
!=
,==
- 只比较大小,不比较类型
!==
,===
- 不仅比较大小,还比较类型
-
逻辑运算符 - 主要操作布尔值
- 或
- ||:两边只要出现true,结果就是true,必须都为false,结果才是false
- 且
- &&:两边只要出现false,结果就是false,必须都为true,结果才是true
- 非
- !:取反
- 或
-
赋值运算符
=
- 将等号右侧的数据,存在左侧的变量中
- 若左侧的数据原本有值,则会被等号右边的数据覆盖
+=
,-=
,*=
,/=
,%=
- 先计算,再赋值(覆盖)
- 请参考:
+ - * / %
-
一元运算符
- 自增
++
- 增加1
- 前自增
++n
:先计算,后使用 - 后自增
n++
:先使用,后计算
- 自减
--
- 减少1
- 前自减
--n
:先计算,后使用 - 后自减
n--
:先使用,后计算
- 自增