Number()函数的转换规则:
- 如果是Boolean值,true和false将被分别转化为1和0;
console.log(Number(true)) //1
console.log(Number(false)) //0
-
如果是数字值,都会转化为10进制返回;
- 十进制,只是简单的传入和返回
console.log(Number(13)) //13
- 八进制(八进制的第一位必须是0,然后是八进制数字序列(0~7),如果数值超出了范围,那么前导0将被忽略,后面的值将被当作十进制处理)
console.log(Number(013)) //11 console.log(Number(079)) //79
- 十六进制(字面值的前两位必须是0x,后面跟任何十六进制数字(0~9及A~F),其中,字母A~F可以大写,也可以小写。)
console.log(Number(0x1a)) //26 console.log(Number(0x79)) //121
-
如果是null,返回0;
console.log(Number(null)) //0
- 如果是undefined,返回NaN
console.log(Number(undefined)) //NaN
-
如果是字符串,则遵循下面的规则:
- 如果字符串中只饱含数字(包括前面带正号和负号的情况),则将其转化为十进制数值。
console.log(Number("1")); //1 console.log(Number("123")); //123 console.log(Number("011")); //11,注意前面的0被忽略了
- 如果字符串中包含有效的浮点格式,则将其转化为对应的浮点格式(同样,也会忽略前面的0)
console.log(Number("1.1")); //1.1 console.log(Number("0.123")); //.123
- 如果字符串中包含有效的十六进制格式,则将其转化为相同大小的十进制整数值
console.log(Number("0x23")); //35
- 如果字符串是空的(不包含任何字符),则将其转化为0
console.log(Number("")); //0
- 如果字符串中包含除上述之外的字符,则将其转化为NaN
console.log(Number("Hello world")); //NaN
-
如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转化返回的值。如果被转化的结果为NaN,则调用对象的toString()方法,然后再次依照前面的规则转化返回的字符串值。
网友评论