Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

重学js —— Number 对象 #111

Open
lizhongzhen11 opened this issue May 23, 2020 · 0 comments
Open

重学js —— Number 对象 #111

lizhongzhen11 opened this issue May 23, 2020 · 0 comments
Labels
js基础 Good for newcomers 重学js 重学js系列 规范+MDN

Comments

@lizhongzhen11
Copy link
Owner

Number 对象

Number构造器

  • 即固有对象 %Number%
  • 全局对象 "Number" 属性的初始值
  • 当作为构造器调用时创建并初始化一个新的Number对象
  • 当作为普通函数使用时,执行类型转换
  • 被设计成子类。它可以用作类定义的 extends 子句的值。打算继承指定的 Number 行为的子类构造函数必须包括对 Number 构造函数的 super 调用,以创建和初始化具有内置插槽 [[NumberData]] 的子类实例。

Number ( value )

  1. 如果 value 存在,
    1. 定义 prim? ToNumeric(value)
    2. 如果 primBigInt 类型,定义 nprim 数学值 的Number类型值
    3. 否则,设置 nprim
  2. 否则,
    1. 设置 n+0
  3. 如果 NewTargetundefined,返回 n
  4. 定义 O? OrdinaryCreateFromConstructor(NewTarget, "%Number.prototype%", « [[NumberData]] »)
  5. 设置 O.[[NumberData]]n
  6. 返回 O

Number 构造器上的属性

Number.EPSILON

  • MDN
  • 值接近 2.2204460492503130808472633361816 X 10-162-52
  • 属性描述符为 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }

可以用来测试浮点数运算结果是否相等

const n = 0.1 + 0.2
n - 0.3 < Number.EPSILON // true,可以认为 n 与 0.3近似相等

Number.MAX_SAFE_INTEGER

  • MDN
  • 值为 9007199254740991 即 253 - 1
  • 属性描述符为 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }

Number.MAX_VALUE

  • MDN
  • 最大的正有限数,接近 1.7976931348623157 × 10308
  • 属性描述符为 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }

Number.MIN_SAFE_INTEGER

  • MDN
  • 值为 -9007199254740991 即 -(253 - 1)
  • 属性描述符为 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }

Number.MIN_VALUE

  • MDN
  • 值接近 5 × 10-324

在IEEE 754-2019中的双精度二进制表示形式中,最小的可能值是非规范化值。如果实现不支持非规范化值,那么 Number.MIN_VALUE 必须是实现能表示的最小的非0正数。

属性描述符为 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }

Number.NaN

  • MDN
  • 就是 NaN
  • 属性描述符为 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }

Number.NEGATIVE_INFINITY

  • MDN
  • 值为 -∞
  • 属性描述符 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }
Number.NEGATIVE_INFINITY === -Infinity // true

Number.POSITIVE_INFINITY

  • MDN
  • 值为 +∞
  • 属性描述符 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }
Number.POSITIVE_INFINITY === Infinity // true

Number.prototype

Number.isFinite ( number )

  1. 如果 number 不是 Number 类型,返回 false
  2. 如果 numberNaN, +∞-∞,返回 false
  3. 否则,返回 true

Number.isInteger ( number )

  1. 返回 ! IsInteger(number)

Number.isNaN ( number )

  1. 如果 number 不是 Number 类型,返回 false
  2. 如果 numberNaN,返回 true
  3. 否则,返回 false

Number.isSafeInteger ( number )

  1. 如果 ! IsInteger(number) 为 true
    1. 如果 abs(number) ≤ 253 - 1,返回 true
  2. 返回 false

Number.parseFloat ( string )

Number.parseInt ( string, radix )

Number 原型对象属性见下章

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
js基础 Good for newcomers 重学js 重学js系列 规范+MDN
Projects
None yet
Development

No branches or pull requests

1 participant