Skip to content

数的表示

在 JavaScript 中,数字可以有不同的表示形式和含义。以下是每个数字的解释:

  1. 11

    • 普通的十进制数字,值为 11。
  2. .11

    • 省略了整数部分的浮点数,等同于 0.11
  3. 11.

    • 带有小数点的数字,但小数部分为 0,等同于 11.011(仍然是浮点数类型,但值等于整数 11)。
  4. 011

    • 已弃用的八进制表示法(在严格模式下会报错)。在非严格模式下,011 会被解释为八进制,值为 9(因为 0 开头表示八进制)。
    • 注意:现代 JavaScript 推荐使用 0o11 表示八进制。
  5. 080

    • 看起来像八进制,但由于八进制数字只能是 0-78 是无效的,所以 080 会被解释为十进制,值为 80
    • 注意:在严格模式下,080 会报错(因为 0 开头会被尝试解析为八进制)。
  6. 0o11

    • 标准的八进制表示法(ES6+),0o 开头表示八进制,11 的八进制值为 9(因为 1×8 + 1 = 9)。
  7. 0o80

    • 无效的八进制数字,因为 8 不是合法的八进制数字,会抛出语法错误。
  8. 0b11

    • 二进制表示法(ES6+),0b 开头表示二进制,11 的二进制值为 3(因为 1×2 + 1 = 3)。
  9. 0x11

    • 十六进制表示法,0x 开头表示十六进制,11 的十六进制值为 17(因为 1×16 + 1 = 17)。
  10. 11e2

    • 科学计数法,表示 11 × 10²,即 1100
  11. 11.toString()

    • 会抛出语法错误,因为 JavaScript 解析器会将 11. 当作浮点数的一部分,然后尝试解析 toString(),导致错误。
    • 正确的写法是:
      • (11).toString()
      • 11..toString()(第一个点表示小数点,第二个点是方法调用)。
  12. 11 .toString()

    • 可以正常执行,因为数字和点之间有空格,JavaScript 能正确识别为对数字 11 调用 toString() 方法。
    • 返回值是字符串 "11"

总结:

数字表示含义
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"