Java Script INFINITY property

Java Script INFINITY property

本文关键字:property INFINITY Script Java      更新时间:2023-09-26

我在v8/math.js 中看到var r = INFINITY;

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

INFINITY财产的来源是什么?

它是如何在内部实施的?

很可能在该代码库中定义的引用引用正无穷大。正无穷大和负无穷大是JavaScript中使用的IEEE 754双精度浮点标准的特征。

实施

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

来源

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

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

来源是什么?它是如何实现的?

它是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_FINITY之外的任何负值,即为negative_FINITY
  • POSITIVE_INFINITY除以除POSITIVE/INFINITY之外的任何正值,即为POSITIVE.INFINITY
  • POSITIVE_INFINITY除以NEGATIVE_FINITY或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,
]);

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

这是对Infinity 的常量引用

来自mozilla.org:

[The]Infinity属性是一个表示无穷大的数值。

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

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