显示类型转换
-
Number()Number(undefined(特殊) / null / true / '123abc' / '' / NaN / '1 23' / {} / new Date(2020, 6, 1));NaN / 0 / 1 / NaN / 0 / NaN / NaN / NaN / 1593532800000;
-
parseInt()只传一个参数,则只关注数字和以数字开头的字符串,其余均返回
NaN,取整直接去小数,不四舍五入,parseInt('100.9px'); 100parseInt('10. 123'); 10可传第二个参数作为进制,将第一个参数当成指定的进制转换成十进制,范围
2 - 36例如
parseInt('10' / 'b',16); 16 / 11; parseInt(3,2); NaN
-
parseFloat()- 与
parseInt类似,但转化的是小数,且没有第二个参数
- 与
-
String()String(true / undefined / null / NaN / {}); 'true' 'undefined' 'null' 'NaN' '[object Obeject]'
-
Boolean()-
Boolean(undefined / null / 0 / false / NaN / ""); false其余均为true
-
-
toString()undefined null无法使用可传参数把指定值转换成指定的进制,例如
var a = 8; a.toString(2); 1000
隐式类型转换
其实内部还是调用显示类型转换的方法
-
isNaN()- 使用
Number()方法转换指定值,再看转换后的结果是不是NaN,是就返回true,不是就返回false
- 使用
-
++ -- +(正) -(负)- 调用
Number()方法
- 调用
-
+(加)- 调用
String()或Number()
- 调用
-
- * / %- 调用
Number()
- 调用
-
&& || !- 调用
Boolean(),但是返回的值可能不是Boolean类型
- 调用
-
< > <= >=两个字符串比较的是
ascii码,有一个数字则调用Number()2 > 1 > 3; false; 'abc' > 'acd'; false;
-
== !=调用
Number(),toPrimitive(),valueOf,toString()对象比较,调用
toPrimitive,该方法会先调用valueOf方法,若返回原始值(一般包装类返回原始值),则直接返回该原始值,否则,调用该对象toString()方法,若返回原始值,则直接返回该原始值1 == true; true; 1 == '1'; true;null,undefined不大于不小于也不等于0,但是null == undefined
-
=== !==- 没有隐式类型转换,两边必须完全相同,长得一样,类型也要相同,如果是对象,则比较地址