一、显示类型转换
1.Boolean()
(1)、undefined/null/‘’ ==》 false
(2)、任何对象(包括例如var obj = {} ) ==> true
(3)、非空字符串 ==》 true
(4)Infinity/-Infinity ==>true
(5)、其他应该均为true
2.Number()
(1)、如果不是字符串,而是数值,则转换为对应的十进制。
(2)、如果为字符串,
a)字符串内容均为数值,则转换为相应的数值。
Number(123); // => 123
Number(0123); //=>83
Number(0x123); //=>291
Number(00x123); //报错
Number(000123); //83
注意进制问题:
如果为0开头的数字字符串,为八进制,浏览器会将前导0忽略,将后面的当成十进制返回 Number('0123'); // =》123
如果为0x开头的数字字符串,则浏览器认为其为十六进制数值(不会忽略前导0,若前面为‘00x’,则返回NaN),将其装换为十进制没返回 Number('0x123'); // =>291
b)字符串内容均为非数值字符,则返回NaN
c)字符串内容数字和非数值混搭
如果第一位为数值,则截取第一位数值到最后一位数值(之后为非数值,就算非数值后又有数值也不考虑)。 Number('123daasd123132'); // =>123
如果第一位为非数值*则直接返回NaN(NaN不能参与比较,即使和自己 NaN == NaN ,报错)
(3)、undefined ==》NaN
null ==>0
空字符串(里面可以包含若干空格) ==>0
对象 ==》先转换valueOf()返回的值,若为NaN,在转换toString()返回值,即为最后结果
注意:还有一种特殊情况,当数字值溢出数值范围,返回无穷大,上溢出,返回Infinity,下溢出,返回-Infinity。
浏览器能表示的最小值为Number.MIN_VALUE ,最大值为Number.MAX_VALUE
3.parseInt()
1. 几乎和parseFloat转换方法完全一样,只不过最终结果返回的都是整数,而不存在浮点数。
2.第二个特殊点是:parseInt(arg1,arg2);有第二个可选参数,制定arg1为几进制数,然后将其转换为十进制整数,如果第二个参数未制定,则默认为十进制。(制定进制转换为十进制);(第二个参数的范围为 2 ~ 36,设定值超过此范围则返回NaN,注:第二个参数实际上也可设置为0,此时相当默认值十进制)
3.区别:toString()方法,toString方法里参数可选,制定将调用该方法的数值转换的进制数,最后再抓转换为字符串 var x = 123; x.toString(2); //=>"1111011"
4.parseFloat()
1.几乎和parseInt转换方法完全一样,只不过最终结果返回的都是浮点数,而不存在整数。
2.不存在第二个参数.
5.String(),等同于toString(),只不过没参数而已
(1)、如果有toString()方法,则调用该方法。
(2)、null和undefined没有该方法,分别返回'null' 和 ’undefined‘;
二、隐士类型转换:
1.进行相等比较,会尽量转换为相同类型再判断
2.+,-,++,--会将操作的先转换为数字,再进行操作。
3.反正就是能转换为合适的类型,就会自动转换。