6. 字面量表示
以 JavaScript 语言为例
1. 十进制 Decimal
常规数字。如下:
10;
1024;
9007199254740991;
当以 0 开头时,需要注意:若数字有 ≥8 的,就默认是十进制的;但如果数字全是<8 的,则会被当成八进制来解析。如下:
0888; // 888
0775; // 509,会被当成八进制
科学记数法的形式,也称指数字面量。格式是beN
,其中 b 是尾数(可以是整数或浮点数),字符e/E
表示分隔符或指数指示符,N 是指数(有符号的整数)。如下:
1e1; // 10
1e-3; // 0.001
5e-324; // 5e-324
9e15; // 9000000000000000
1.7976931348623157e+308; // 1.7976931348623157e+308
2.220446049250313e-16; // 2.220446049250313e-16
2. 二进制 Binary
字面量以 0b
或者 0B
开头,这是 ECMAScript 2015 中的新语法。如下:
0b10000111; // 135
0b11111111110; // 2046
0b10000000000; // 1024
0b01111111111; // 1023
0b10000110011; // 1075
如果 0b/0B
后面的值不是 0 和 1,会报语法错误:
0b002001111; // Uncaught SyntaxError: Invalid or unexpected token
3. 八进制 Octal
字面量以 0o
或者 0O
开头,这是 ECMAScript 2015 中的新语法。如下:
0o755; // 493
0o644; // 420
再就是前面“十进制”里提到的,以 0 开头的情况。即便“看起来”是十进制的数字,但如果它们都 <8(即在 0~7 之间)是会被当成八进制来解析的。如下:
0755; // 493
0775; // 509
若 0o/0O
后面的值不是 0~7,会报语法错误:
0b6339; // Uncaught SyntaxError: Invalid or unexpected token
4. 十六进制 Hexadecimal
字面量以 0x
或者 0X
开头,后跟 0~F。如下:
0x0010; // 16
0x7fe; // 2046
0xffff; // 65535
若 0x/0X
后面的值不是 0~F,会报语法错误:
0x99EFG; // Uncaught SyntaxError: Invalid or unexpected token
5. 总结
这部分内容比较直观,大约就是所见即所得。对我们的启示就是:
在写进制的时候,前缀
0b/0o/0x
最好不要省略若是接口返回来的十进制数据,如有必要,保险起见可以手动处理下开头的 0
最后简单提下,Number 类型的字面量如果都在后面加个字符 n
就是 BigInt 类型的了。如下:
755n;
9007199254740992n;
0b11111111110n; // 2046n
0o7556643555n; // 1035683693n
0xffffeeeaaan; // 1099510508202n
唯一不同的就是在 BigInt 里 0755n
不会被当成八进制,因为前缀 o/O
不能省。如下:
0755n; // Uncaught SyntaxError: Invalid or unexpected token
0o755n; //493n
6. 主要参考
Last updated