数的表示
在 JavaScript 中,数字可以有不同的表示形式和含义。以下是每个数字的解释:
11- 普通的十进制数字,值为 11。
.11- 省略了整数部分的浮点数,等同于
0.11。
- 省略了整数部分的浮点数,等同于
11.- 带有小数点的数字,但小数部分为 0,等同于
11.0或11(仍然是浮点数类型,但值等于整数 11)。
- 带有小数点的数字,但小数部分为 0,等同于
011- 已弃用的八进制表示法(在严格模式下会报错)。在非严格模式下,
011会被解释为八进制,值为9(因为0开头表示八进制)。 - 注意:现代 JavaScript 推荐使用
0o11表示八进制。
- 已弃用的八进制表示法(在严格模式下会报错)。在非严格模式下,
080- 看起来像八进制,但由于八进制数字只能是
0-7,8是无效的,所以080会被解释为十进制,值为80。 - 注意:在严格模式下,
080会报错(因为0开头会被尝试解析为八进制)。
- 看起来像八进制,但由于八进制数字只能是
0o11- 标准的八进制表示法(ES6+),
0o开头表示八进制,11的八进制值为9(因为1×8 + 1 = 9)。
- 标准的八进制表示法(ES6+),
0o80- 无效的八进制数字,因为
8不是合法的八进制数字,会抛出语法错误。
- 无效的八进制数字,因为
0b11- 二进制表示法(ES6+),
0b开头表示二进制,11的二进制值为3(因为1×2 + 1 = 3)。
- 二进制表示法(ES6+),
0x11- 十六进制表示法,
0x开头表示十六进制,11的十六进制值为17(因为1×16 + 1 = 17)。
- 十六进制表示法,
11e2- 科学计数法,表示
11 × 10²,即1100。
- 科学计数法,表示
11.toString()- 会抛出语法错误,因为 JavaScript 解析器会将
11.当作浮点数的一部分,然后尝试解析toString(),导致错误。 - 正确的写法是:
(11).toString()或11..toString()(第一个点表示小数点,第二个点是方法调用)。
- 会抛出语法错误,因为 JavaScript 解析器会将
11 .toString()- 可以正常执行,因为数字和点之间有空格,JavaScript 能正确识别为对数字
11调用toString()方法。 - 返回值是字符串
"11"。
- 可以正常执行,因为数字和点之间有空格,JavaScript 能正确识别为对数字
总结:
| 数字表示 | 含义 |
|---|---|
11 | 十进制 11 |
.11 | 浮点数 0.11 |
11. | 浮点数 11.0(等同于 11) |
011 | 非严格模式下为八进制 9,严格模式下报错 |
080 | 非严格模式下为十进制 80(因为 8 不是合法八进制数字),严格模式报错 |
0o11 | 八进制 9 |
0o80 | 语法错误(8 不是合法八进制数字) |
0b11 | 二进制 3 |
0x11 | 十六进制 17 |
11e2 | 科学计数法 1100(11 × 10²) |
11.toString() | 语法错误(解析器混淆) |
11 .toString() | 正确写法,返回字符串 "11" |