显示类型转换
Number() 和 parseInt() parseFloat() 的区别
-
布尔值和null
var a = true, b = false, c = null; console.log(Number(a)); // -> 1 console.log(Number(b)); // -> 0 console.log(Number(c)); // -> 0 console.log(parseInt(a)); // -> NaN console.log(parseInt(b)); // -> NaN console.log(parseInt(c)); // -> NaN -
undefined都转换为NaN
-
字符串转换数字,如果开头的是非数字则都转化为NaN。开头为数字parseInt()和parseFloat()会从开头截取到非数字的位置停止,而Number() 只要字符串中包含非数字的字符结果就是NaN。
var d = 'a1', e = '1a'; console.log(Number(d)); // -> NaN console.log(parseInt(d)); // -> NaN console.log(Number(e); // -> NaN console.log(parseInt(e)); // -> 1 -
遇到小数Number()转化的字符串中小数点是有效的,而parseInt() 遇到小数点会停止解析,parseFloat() 所解析的字符串中第一个小数点是有效的。
var f = '3.14'; console.log(Number(f)); // -> 3.14 console.log(parseInt(f)); // -> 3 console.log(parseFloat(e); // -> 3.14
隐式类型转换
var num = '123';
num++;
typeof(num); // -> number
var str = 'abc';
str = str + 6;
console.log(str); // -> "abc6"
var mul = '3' * 1;
tyoeif(mul); // -> number
- 遇到+只要有一边为字符串类型,默认另一边转换为字符串然后进行拼接。* 、/、 %、 -、>、 <、 >=、 <=、!=、== 只要又一边为number 另一边就转换为 number,两边都为字符串时比较ASCII码值。
- isNaN() 内部是通过Number()来转换的, 可以转换为数字的返回false。