为什么Infinity是一个数字?

时间:2016-05-31 17:14:11

标签: javascript math infinity

在JavaScript中,isNaN(Infinity)返回false,就好像Infinity是一个数字;但是Infinity上的几个算术运算就好像它是数学无穷大,而不是数字:

enter image description here

那么,为什么没有isNaN(Infinity)返回真实?是因为its value defaults to a Number object?

2 个答案:

答案 0 :(得分:1)

Infinity不是NaN,因为你可以在数学表达式中使用它。显然1 + NaN永远不会有效,但1 + Infinity会返回InfinitySee here)。链接中的许多示例都是数学 indeterminate ,这就是他们返回Nan的原因。例如,Infinity * 0是不确定的(See here)。

希望这有帮助。

答案 1 :(得分: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('==================');
});