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-162. 二进制 Binary
字面量以 0b 或者 0B 开头,这是 ECMAScript 2015 中的新语法。如下:
如果 0b/0B 后面的值不是 0 和 1,会报语法错误:
3. 八进制 Octal
字面量以 0o 或者 0O 开头,这是 ECMAScript 2015 中的新语法。如下:
再就是前面“十进制”里提到的,以 0 开头的情况。即便“看起来”是十进制的数字,但如果它们都 <8(即在 0~7 之间)是会被当成八进制来解析的。如下:
若 0o/0O 后面的值不是 0~7,会报语法错误:
4. 十六进制 Hexadecimal
字面量以 0x 或者 0X 开头,后跟 0~F。如下:
若 0x/0X 后面的值不是 0~F,会报语法错误:
5. 总结
这部分内容比较直观,大约就是所见即所得。对我们的启示就是:
在写进制的时候,前缀
0b/0o/0x最好不要省略若是接口返回来的十进制数据,如有必要,保险起见可以手动处理下开头的 0
最后简单提下,Number 类型的字面量如果都在后面加个字符 n 就是 BigInt 类型的了。如下:
唯一不同的就是在 BigInt 里 0755n 不会被当成八进制,因为前缀 o/O 不能省。如下:
6. 主要参考
Last updated