js Number类型

日常随想 yekong

在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 重难点实例精讲

喜欢