Java 脚本无限 属性

Java Script INFINITY property

我在 v8/math.js

中看到 var r = INFINITY;

但它在控制台中不起作用。

INFINITY 的来源是什么属性?

内部是如何实现的?

这是对 Infinity

CONSTANT 引用

来自mozilla.org

[The] Infinity property is a numeric value representing infinity.

它的行为类似于无穷大,即任何正数乘以 Infinity 就是 Infinity,除以 Infinity 就是 0

console.log(1 * Infinity); // Infinity
console.log(1 / Infinity); // 0

可能是在该代码库中定义的引用,用于引用正无穷大。正无穷大和负无穷大是 JavaScript.

中使用的 IEEE 754 双精度浮点标准的特征

实施

Sign Exponent Fraction 
0    11⋯11    00⋯00     +Infinity   
1    11⋯11    00⋯00     -Infinity

Source

来源

我可以在该代码库 here 中看到一个 INFINITY 宏。但它在 Python 中。它如何进入 JavaScript 可能是构建的一部分。

看起来他们的 CONST 引用(为了可读性)是 Infinity (Number.POSITIVE_INFINITY)。

What is the source? And how is it implemented?

它是 JS 运行时的一部分,可能会或可能不会在不同的浏览器中区分。实现将是一个大于任何其他数字的数字:

Number.POSITIVE_INFINITY > Number.MAX_SAFE_INTEGER // true
Number.POSITIVE_INFINITY > Number.MAX_VALUE        // true
Infinity + Infinity    // Infinity
Infinity - Infinity    // NaN, interesting

以下内容来自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY

此值的行为与数学无穷大略有不同:

  • 任何正值,包括 POSITIVE_INFINITY,乘以 POSITIVE_INFINITY 就是 POSITIVE_INFINITY。
  • 任何负值,包括 NEGATIVE_INFINITY,乘以 POSITIVE_INFINITY 就是 NEGATIVE_INFINITY。
  • 零乘以 POSITIVE_INFINITY 是 NaN。
  • NaN 乘以 POSITIVE_INFINITY 是 NaN。
  • POSITIVE_INFINITY 除以 NEGATIVE_INFINITY 以外的任何负值,得到 NEGATIVE_INFINITY.
  • POSITIVE_INFINITY 除以除 POSITIVE_INFINITY 以外的任何正值,得到 POSITIVE_INFINITY.
  • POSITIVE_INFINITY 除以 NEGATIVE_INFINITY 或 POSITIVE_INFINITY,结果为 NaN。
  • 任何数字除以 POSITIVE_INFINITY 都是零。

这看起来与整个实现差不多,将其编写为代码应该不会太难。

INFINITY 貌似是 Infinity:

utils.InstallConstants(global, [
  // ECMA 262 - 15.1.1.1.
  "NaN", NaN,
  // ECMA-262 - 15.1.1.2.
  "Infinity", INFINITY,
  // ECMA-262 - 15.1.1.2.
  "undefined", UNDEFINED,
]);

Source

至于为什么它不能从控制台使用,可能是因为它 运行 在不同的范围内(即不同于 window)。我最好的猜测是 global 对象是全局对象,这就是为什么你可以像那样使用 INFINITY(而不是应该相同的 global.INFINITY)的原因。