为什么Infinity属性用作命令(而不是结果)
例如,下面的代码有效,但结果不符合我的预期。
alert(isOdd(Infinity));
function isOdd(num) { return num%2==1; }
答案 0 :(得分:4)
MDN参考
无穷大是全局对象的属性,即它是一个变量 全球范围。
Infinity的初始值是Number.POSITIVE_INFINITY。价值 无穷大(正无穷大)大于任何其他数字。这个 值在数学上表现得像无穷大;例如,任何积极的 数字乘以无穷大是无穷大,任何除以 无穷大是0。
首先是什么意思?本质上,无限是一个概念,而不是一个实际价值。数学基于概念而非价值。例如,数字不是值,数字是。
数字7是预期值的概念,Romans将其写成VII,以标准形式(BASE-10)将其写为7.在二进制(BASE-2)中,将其写为111.如果您想要只要概念正确应用,就可以使用三角形或任何其他标记。
现在您知道,Infinity只是比任何其他数字更大的概念。 它没有任何价值。无限循环的基本概念意味着永远运行的唯一原因是因为在概念上它意味着你所处的那个循环的数字迭代(无论是1或100万)无穷大总是大于那个数字。
在编码中应用概念有很多方法,这就是为什么每个人的代码运行方式不同,但是例如:
来自w3schools的样本:
function findMax(x) {
var i;
var max = -Infinity;
for(i = 0; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
}
document.getElementById("demo").innerHTML = findMax(1, 123, 500, 115, 44, 88);
在网站的示例中,他们将6个值的参数传递给函数findMax findMax(1,123,500,115,44,88);
然后他们使用循环来停止参数长度。在循环中,它们将最大值从无穷大概念重新分配给一个值,如果再次循环时大于该值,则最大值将更改为新的高值。
为什么这很重要?因为在这个例子中他们使用负无穷大的概念,这只是无穷大的负值递减。人们可以轻易地争辩说0可以取代 - 无穷大,但它们是错的。这就是原因。
如果您的价值范围取决于上述公式中传递的负值,该怎么办?如果您拥有的是从用户输入或其他功能动态捕获的负值,该怎么办?
考虑findMax是findMax(-1,-10,-15,-20);
0会给出一个错误的输出,即它是正确的最大值,它不是你想要的。你想要-1一个作为输出。还有其他方法可以实现解决方案,但为了Infinity概念讨论,我将在此结束。
我希望这能更好地阐明无限概念的过程。
答案 1 :(得分:3)
Infinity
是全局对象的一个属性,它包含一个表示infinity的数学概念的数值。我不知道它可以被称为“命令”的任何正常定义。
关于你的编辑,那应该返回false(我运行它以确认这种怀疑,并且它在我的浏览器上完成)。这是正确的,因为无穷大通常不被认为是奇数。