Java脚本INFINITY属性

时间:2015-11-22 16:12:59

标签: javascript math.js

我在v8/math.js

中看到了var r = INFINITY;

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

INFINITY属性的来源是什么?

如何在内部实施?

4 个答案:

答案 0 :(得分:3)

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

<强>实施

111001001011101011101101101011110101111011010011001100010011010000101011000111100000111010000001001100100111101111011000010110
10110011100011110100010110111110001100101101010101111100110001111011011011111010110011100000010111110110101011100001000110110111
100111001000010100100011110110101100110000110011000010000011010010000001001101100100111001100011000000010111000101110001000101
10000100001101001110110111011000111010111101000001110010001000101100010110010010011111011010101011111101000100011100001011100011
1000111101010011111101010000011011000001001000010001111001011010110110110000000000110000110011110100111100110100010010111011
110000010101001100001101000100011001101000110011000101111000000010100001110110000011001101000001001001111000110000000011000001
11001010100110100010001101111100100001110011100001001011111010100011110101110100000011010111010110011111101010010001111010001110
1100100111101101100110101100000111111101000000110000110011001011010001110001101010101110111011100101100110000001110101011111111
11000011011011011101000110000011110001101010111111100010010000011011000010000111000001000100111011100010110010000110111001010001
1010111001010111011010000111110000001011101111100011111011101001101010000010101100110111101101010000111001011101101001000000001

Source

来源

我可以在该代码库here中看到Sign Exponent Fraction 0 11⋯11 00⋯00 +Infinity 1 11⋯11 00⋯00 -Infinity 宏。但它是在Python中。它如何进入JavaScript可能是构建的一部分。

答案 1 :(得分:1)

看起来他们的CONST引用(为了便于阅读)到Infinitykeyrows = pool[key == pool.Name] )。

  

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

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

keyrows = pool[key in pool.Name]

以下内容来自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之外的任何数字均为零。

看起来几乎就是整个实现,不应该太难以将其写为代码。

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

这是对Infinity

CONSTANT引用

来自mozilla.org

  

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

它的行为类似于无穷大,即任何正数乘以InfinityInfinity,除Infinity之外的任何数字均为0

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