借鉴阮一峰前辈:http://javascript.ruanyifeng.com/grammar/number.html
查看书籍:javascript高级程序设计第三版
一、Boolean类型
boolean类型的字面值只有true和false,但是ECMAscript中所有类型的值都与这两个boolean值等价的值。要将一个值转换为其对应的boolean的值,可以调用转型函数boolean()。
数据类型 | 转换为true的值 | 转换为false的值 |
Boolean | true | false |
String | 任何非空字符串 | ”“(空字符串) |
Number | 任何非0数字值 | 0和NaN |
Object | 任何对象 | |
Null | null | |
Undefined | undefined |
二、Number类型
JavaScript内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以1与1.0是相同的,是同一个数。
- 十进制:没有前导0的数值。
- 八进制:有前缀
0o\
或0O
的数值,或者有前导0、且只用到0-7的七个阿拉伯数字的数值。- 十六进制:有前缀
0x
或0X
的数值。- 二进制:有前缀
0b
或0B
的数值。
1.parseInt()将字符串转换为整数
console.log(parseInt(undefined)); //NaN
console.log(parseInt(null)); //NaN
console.log(parseInt(123)); //123
console.log(parseInt(1.23)); //1
console.log(parseInt('123')); //123
console.log(parseInt(' 123')); //123
console.log(parseInt('1.23')); //1
console.log(parseInt('123abcd'));//123
console.log(parseInt('123e2')); //123
console.log(parseInt('123px')); //123
由上段代码:
(1)undefined和null都被转为NaN
(2)如果传入不是字符串,先转为字符串,再转换。
(3)字符串转为整数的时候,是一个个字符依次转换,如果遇到不能转为数字的字符,就不再进行下去,返回已经转好的部分。
console.log(parseInt('')); //NaN
console.log(parseInt('abcd123')); //NaN
console.log(parseInt('+123')); //123
由上段代码:
(4)如果字符串的第一个字符不能转化为数字(后面跟着数字的正负号除外),返回NaN
parseInt()方法还可以接收第二个参数,表示被解析的值的进制,返回该值对应的十进制数。
console.log(parseInt(123,undefined)); //123
console.log(parseInt(123,null)); //123
console.log(parseInt(123,0)); //123
console.log(parseInt(123,1)); //NaN
console.log(parseInt('123',37)); //NaN
console.log(parseInt('123',2)); //1
console.log(parseInt('321',2)); //NaN
console.log(parseInt('123',8)); //83
console.log(parseInt('123',16)); //291
由上段代码:
(5)参数为0,undefined,null时,直接忽略
(6)第二个参数在2~36之间,超出范围会返回NaN
(7)如果字符串中的第一个数值可以转化,并且该数值超过进制本身值时,会返回NaN
(8)如果字符串中的第一个数值可以转化,并且该数值没超过进制本身值时,会转化到能转化的那一位
2.parseFloat() 将一个字符串转为浮点数
console.log(parseFloat(1.23)); //1.23
console.log(parseFloat('1.23')); //1.23
console.log(parseFloat('123e-2')); //1.23
console.log(parseFloat('0.123e2')); //12.3
(1)如果字符串符合科学计数法,则会进行相应的转换。
(2)其他与parseInt差不多
3.Number()把非数值转换为数值
console.log(Number(true)); //1
console.log(Number(false)); //0
console.log(Number(null)); //0
console.log(Number("")); //0
console.log(Number(undefined)); //NaN
console.log(Number("hello world!!!")); //NaN
console.log(Number("000011")); //11
console.log(Number({})); //NaN
由上段代码:
(1)false,null,”“都被转换为0
(2)true转换为1
(3)只包含数字,前导0被忽略。
(4)undefined和非空串都被转换为NaN
(5)如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果是NaN,则调用对象的toString()方法,然后再依照前面的规则转换返回的字符串值。(这里没有代码实例)