2011-12-15 14 views
18

Entiendo que Number.POSITIVE_INFINITY tiene un valor de , y Number.NEGATIVE_INFINITY tiene un valor de -Infinity.Infinity vs Number.POSITIVE_INFINITY

¿Hay alguna razón por la que usaría Number.POSITIVE_INFINITY en lugar de Infinity, o Number.NEGATIVE_INFINITY en lugar de -Infinity?

En una nota relacionada, ¿hay algún problema entre navegadores con isFinite?

Respuesta

17

Number.POSITIVE_INFINITY es una constante y por lo tanto no overwritable, mientras que Infinity es una propiedad de window y es overwritable:

Number.POSITIVE_INFINITY = 123; 
Number.POSITIVE_INFINITY; // Infinity 

Infinity = 123; 
Infinity; // 123 

Esto es lo mismo que undefined o NaN, que son básicamente propiedades de window y overwritable . Tampoco es bueno confiar en window.undefined; más bien quieres producir un undefined 'real' (como en una función auto ejecutada donde no pasas un argumento pero lo declaras en la función).

Especificaciones:

15.7.3.6 Number.POSITIVE_INFINITY

El valor de Number.POSITIVE_INFINITY es +∞.

Esta propiedad tiene los atributos { [[Writable]]:false, [[Enumerable]]: false, [[Configurable]]: false }.

En ES5, la capacidad de sobrescribir se ha eliminado:

15.1.1: Las propiedades de valor NaN, Infinity y undefined del objeto global se han cambiado a propiedades de sólo lectura.


Sobre isFinite: Una vez enviado el question de por qué el Cierre Biblioteca Google implementa una función personalizada para isFinite, y la respuesta fue que probablemente hubo alguna inconsistencia entre navegadores, aunque no está claro qué navegador y qué inconsistencia.

+4

+1, me encanta aprender algo nuevo – Joe

+1

Pero, realmente no respondiste si 'Number.POSITIVE_INFINITY' da el mismo resultado que' Infinity' además del hecho de que 'Infinity' es modificable en los navegadores más antiguos. – jfriend00

+1

@ jfriend00: Esa no es la pregunta si lo estoy entendiendo correctamente. Se pregunta si hay una razón para usar 'Number.POSITIVE_INFINITY' sobre' Infinity', y esta razón es legítima, creo. – pimvdb

Cuestiones relacionadas