Подтвердить что ты не робот

Infinity vs Number.POSITIVE_INFINITY

Я понимаю, что Number.POSITIVE_INFINITY имеет значение Infinity, а Number.NEGATIVE_INFINITY имеет значение -Infinity.

Есть ли причина, по которой я использовал бы Number.POSITIVE_INFINITY вместо Infinity или Number.NEGATIVE_INFINITY вместо -Infinity?

В соответствующей заметке есть ли проблемы с несколькими браузерами с isFinite?

4b9b3361

Ответ 1

Number.POSITIVE_INFINITY является константой и, следовательно, не перезаписывается, тогда как Infinity является свойством window и является перезаписываемым:

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

Infinity = 123;
Infinity; // 123

Это то же самое, что и undefined или NaN, которые в основном являются свойствами window и перезаписываются. Нехорошо полагаться на window.undefined; скорее вы хотите создать "реальный" undefined самостоятельно (как в самозапускаемой функции, где вы не передаете аргумент, а объявляете его в функции).

Технические характеристики:

15.7.3.6 Number.POSITIVE_INFINITY

Значение Number.POSITIVE_INFINITY равно +∞.

Это свойство имеет атрибуты { [[Writable]]: false , [[Enumerable]]: false, [[Configurable]]: false }.

В ES5 функция перезаписи была удалена:

15.1.1. Свойства свойства NaN, Infinity и undefined глобального объекта были изменены для свойств только для чтения.


О isFinite: я однажды разместил question в отношении того, почему библиотека Google Closure реализует пользовательскую функцию для isFinite, и ответ был таков: вероятно, была некоторая кроссбраузерная несогласованность, хотя неясно, какой браузер и какая несогласованность.