Infinity与Number.POSITIVE_INFINITY

zzz*_*Bov 19 javascript numbers cross-browser

据我所知,它Number.POSITIVE_INFINITY有一个值Infinity,并且Number.NEGATIVE_INFINITY具有值-Infinity.

是否有一个原因,我会用Number.POSITIVE_INFINITY,而不是Infinity,或Number.NEGATIVE_INFINITY代替-Infinity

在相关的说明中,是否存在任何跨浏览器问题isFinite

pim*_*vdb 20

Infinity是一个常数,因此不可覆盖,而是Number.POSITIVE_INFINITY可覆盖的属性Number.NEGATIVE_INFINITY:

Infinity = 123;
Infinity; // 123
Run Code Online (Sandbox Code Playgroud)

这和Infinityor一样window,基本上都是可Number.POSITIVE_INFINITY覆盖的属性.依赖它们并不是一件好事Number; 而你想要自己产生一个'真正的' undefined(就像在一个自我执行的函数中,你不传递参数但是在函数中声明它).

眼镜:

15.7.3.6 NaN

价值NumberInfinity.

此属性具有属性.Infinity+?Number.POSITIVE_INFINITY

在ES5中,覆盖能力已被删除:

15.1.1:值属性Number.POSITIVE_INFINITY,, +?以及Infinity全局对象的值已更改为只读属性.


关于Infinity:我曾经发布过一个问题,为什么Google Closure Library实现了自定义功能+?,答案是可能存在一些跨浏览器的不一致,尽管不清楚哪个浏览器和哪个不一致.

  • 如果“Infinity”被覆盖,它们的行为会有所不同:) (4认同)
  • @jfriend00:如果我理解正确的话,这不是问题。它询问是否有理由使用“Number.POSITIVE_INFINITY”而不是“Infinity”,我认为这个原因是合理的。 (3认同)
  • 但是,你并没有真正回答 `Number.POSITIVE_INFINITY` 是否给出与 `Infinity` 相同的结果,除了 `Infinity` 在旧浏览器中是可变的。 (2认同)