数的表示
在 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" |