【又见JavaScript】显示转换&&隐式转换知识点总结
显式类型转换
Number()
当( )内需转换的值不同时:
- 值是“123”/“3.14159”这种以数字组成的字符串时,返回数字类型的123,3.14159;
- 值是’abc’或’23a’,有字符组成的字符串,或undefined时,返回数字类型的NaN;
- 值是true、false、null(不是字符串)的关键字时,返回1,0,0;
parseInt()
只想转换成整型,从第一位开始判断是否为数字
parseInt(value,radix)
radix 是一个2到36之间的整数值,按理解是按不同进制转换,ES5规定如果省略就代表用十进制解析
- 值是“123”/“3.14159”这种以数字组成的字符串时,返回小数点前面的数字,不会四舍五入;
- 值是true、false、null、undefined、NaN(不是字符串)的关键字时,返回NaN;
- 值是数字开头的,且有字符组成的字符串如"123ab11"时,返回字符前的数字;
- 值是以字符开头,且有数字组成的字符串如"fff88"时,返回NaN;
parseFloat()
只接受一个参数,只能使用十进制去解析
- 会把有小数点的数字字符串转换出来,若想保留几位小数,使用
.toFixed()
方法,( )里填需要保留几位,此方法返回的值会四舍五入
String()
转换为字符串
- 平时更多使用 值+"" (引号)去进行字符串的转换
toString(value,radix)
也可以填radix 几进制的转换
Boolean()
- undefined null NaN “” 0 =>false
- 其余都是true
隐式类型转换
-
自增/自减
var a = '123'; a++; // 先将a隐式转换了,Number(a)再进行自增; console.log(a);
-
“+” 号拼接
var a = 'a' + 1; // 先将数字1隐式转换了,Number(1),再进行拼接; console.log(a); // a1
-
“* / -” 号的使用
var a = "3" * 2; // 先把string隐式转换为number Number(3) console.log(a); // 6
-
“> < >= <=” 的使用
var a = '1' > 2; // 先Number(1) -> 再与数字2作比较 console.log(a); // false // 补充: 两个字符串的比较 var b = 'a' > 'c'; // 根据ascii码值进行比较 console.log(b);
-
一些浏览器的运算 / 比较 / 转换规律
“ == ” 相等和 “ === ” 绝对相等
-
== 的比较规律/转换规则(隐式转换):
-
对象 == 字符串 对象转换为字符串(对象.toString())
eg. [10] == ‘10’;// true
-
null == undefined => true(===时不等)/ 0 == null => false(底层机制的转换不同有关)
但 null & undefined 和其它值都不相等【0 是有自己的内存空间的值,而null是没有自己的内存空间的】
-
NaN 和任何类型的值相比较都不相等(包括它自己)
-
剩下的两边不同时都是转换为数字进行比较(对象转数字:Number(对象.toString() ))
练习题:
[] == false; // [] -> [].toString() -> '' -> Number('') -> 0 // false -> 0 // true
-
-
=== 绝对相等:两边的类型、值都一致才相等,类型不同时直接不对等,不会进行隐式转换 项目中用它更好
-