在JavaScript中,Number类型的数据既包括了整型数据,也包括了浮点型数据。
整型数据 最基本的数值采用的是十进制整数,另外,数值还可以通过八进制或者十六进制表示。
八进制
如果想要用八进制表示一个数值,那么首位必须是0,其他位必须是0~7的八进制序列。如果后面位数的字面值大于7,则破坏了八进制数据表示规则,前面的0会被忽略,当作十进制数据处理。
var num1 = 024; // 20
var num2 = 079; // 79
十六进制。
如果想要用十六进制表示一个数值,那么前两位必须是0x,其他位必须是十六进制序列(0~9,a~f或者A~F)。如果超过了十六进制序列,则会抛出异常。
var num3 = 0x3f; // 63
var num4 = 0x2g; // SyntaxError: Invalid or unexpected token
Boolean类型转换为Number类型
· true转换为1。
· false转换为0。
Null类型转换为Number类型
· Null类型只有一个字面值null,直接转换为0。
Undefined类型转换为Number类型
· Undefined类型只有一个字面值undefined,直接转换为NaN。
String类型转换为Number类型
如果字符串中只包含数字,则会转换成十进制数;如果前面有0,会直接省略掉,例如"0123"会转换为123。
如果字符串中包含的是有效的浮点数,则同样按照十进制转换,例如"1.23"会转换为1.23。
如果字符串中包含有效的十六进制格式,则会按照十进制转换,例如"0x3f"会转换为63。
如果是空字符串,则转换为0。
如果字符串中包含了除上述格式以外的字符串,则会直接转换为NaN。
Object类型转换为Number类型
Object类型在转换为Number类型时,会优先调用valueOf()函数,然后通过valueOf()函数的返回值按照上述规则进行转换。如果转换的结果是NaN,则调用toString()函数,通过toString()函数的返回值重新按照上述规则进行转换;如果有确定的Number类型返回值,则结束,否则返回“NaN”。
笔记内容来自于书籍 JavaScrint 重难点实例精讲