显示类型转换
-
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'); 100
parseInt('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
-
=== !==
- 没有隐式类型转换,两边必须完全相同,长得一样,类型也要相同,如果是对象,则比较地址