Почему бесконечность число?

В JavaScript isNaN(Infinity) возвращает false, как если бы Infinity была числом; но некоторые арифметические операции над бесконечностью ведут себя так, как будто это математическая бесконечность, а не число:

Итак, почему не isNaN(Infinity) вернуть истину? Это потому, что его значение по умолчанию равно объекту Number?

2 ответа

Бесконечность не NaN потому что вы можете использовать его в математических выражениях. очевидно 1 + NaN никогда не сработает, но 1 + Infinity возвращается Infinity ( См. Здесь). Многие из примеров, которые у вас есть в вашей ссылке, являются математически неопределенными, поэтому они возвращаются как Nan. Например, Infinity * 0 является неопределенным ( см. здесь).

Надеюсь это поможет.

Причина isNaN(Infinity) возвращается false не имеет ничего общего с математическими подробностями, это просто потому, что его реализация равна этому:

function isNaN(object) {
  var coerced = +object;

  return coerced !== coerced;
}

Другими словами, это принуждает ввод к Number, Если приведенное значение определяется как NaN (проверяя, не является ли он строго равным самому себе), тогда он возвращает true, В противном случае возвращается false,

[Infinity, null, undefined, true, new Date(), {}, [], [1], [1,2,3], 'blah', '4'].forEach(function (object) {
  console.log('object: ' + (typeof object !== 'number' ? JSON.stringify(object) : object));
  console.log('coerced: ' + (+object));
  console.log('isNaN: ' + isNaN(object));
  console.log('==================');
});

Другие вопросы по тегам