一 数据类型的转换
1 为什么要转换数据类型?
1 如果用户、计算机、或其他程序给我们的数据类型不是我们想要的数据类型。
2 需要转成当前程序需要的数据类型,再进行运算。
3 这节课学习数据类型的转换方法。
2 数据类型的转换方法
1 强制转换(显示转换,主动转换)
1 字符转数值
1 parseInt(要转换的数据或变量)
1 从左向右依次检测,遇到第一个非字数字的字符,停止转换。
2 忽略小数点后的所有内容,其实是将小数点识别成了非数字。
3 如果第一位就是非数字,直接NaN
1 NaN是什么?
Not a number
2 不是一个数字的数值型数据(数值包括数据)
3 非法的数值运算的结果。
非法:不合规,不合法(ECMAScript),本来不能转,非要转。
2 parseFloat(要转换的数据或变量)
1 从左向右依次检测,遇到第一个非数字的字符,停止转换。
2 可以识别小数点。
3 如果第一位就是非数字,直接NaN。
3 Math.round(要转换的数据或变量)
1 Math.round不是专门做字符转数值的
2 专门做取整的,取最近的整数,顺带着可以实现字符转数值的转换
1 严格转换,只要出现非数字,那么就是NaN
4 Number(要转换的数据或变量)
1 Number不是专门做字符转数值的
2 系统内置的构造函数,用来创建数值对象,顺带着可以实现字符转数值的转换(后话)
1 严格转换,只要出现非数字,那么就是NaN
5 如何进行选择?
1 按需选择
1 当需要转换时,观察当前程序的运行情况,以及要转换数据的实际情况,对应实际规则,选择方法。
2 不管选哪个,只要注意规则,都可以灵活运用。
2 数值转字符
1 数值变量.toString()
直接转换,相当于加了一个引号。
2 数值变量.toFixed()
保留n位小数
2 隐式转换(被动转换,什么都没做,自动就转了)
隐式转换场景 / 规则
1算术运算
- + 号两边只要出现字符,结果必然为字符
- * / %(取余) 的结果必然是数值
2 关系运算
- > < >= <= != == 两边只要出现数值,那么另一边也会转成数值,进行比较。
3 其他转布尔(以后讲)
其他转布尔
布尔转数值
其他转字符
二 数据的运算符
1 数学运算符(算数运算符)
1 + 加号,加法
1 当加号两边都是数值型数据时,是数学的加法运算
2 任意一边是字符,那么就变成了拼接。
拼接就是将两个数据,直接组合起来
2 - * / %
1 就是正常的数学运算
2 就算两边不是数值,也会默认转成数值,进行运算
3 如果某个数据不能转成数值,会得到NaN
2 关系运算符 (的结果是布尔值)
1 > < >= <=
1 只要有一边出现数值,都是数值的比较规则
2 如果都是字符,才是字符的比较规则(逐位比较),得到结果,就停止。
2 != ==
1 会发生隐式类型转换,或者只比较大小,不比较类型
3 !== ===
1 不会发生隐式类型转换。不仅比较大小,还比较类型
3 逻辑运算符(主要操作布尔值)
1 或 ||
1 两边只要出现true,结果就是true;
两边必须都是false,结果才是false
2 且 &&
1 两边只要出现false,结果就是false;
两边必须都是true,结果才是true
3 非 !
1 取反
4 赋值运算符
1 =
1 将等号右侧的内容,存在左侧的变量中
2 把右边的内容,放在左边的变量中
3 如果左侧的变量,原本有值,那么会覆盖
2 += -= *= /= %=
1 先计算,再覆盖(赋值)
2 参考 + - * / %
5 一元运算符
1 自增
1 ++
2 增加1
3 有前后之分
1 前自增 ++a 先计算,后使用
2 后自增 a++ 先使用,后计算
2 自减
1 --
2 减少1
3 有前后之分
1 前自减 --a 先计算,后使用
2 后自减 a-- 先使用,后计算