当我在 javascript 数学最小值和最大值函数的参数中键入一个数组时,它返回正确的值:
console.log( Math.min( 5 ) ); // 5
console.log( Math.max( 2 ) ); // 2
var array = [3, 6, 1, 5, 0, -2, 3];
var minArray = Math.min( array ); // -2
var maxArray = Math.max( array ); // 6
但是,当我使用不带参数的函数时,它会返回错误的答案:
console.log( Math.min() ); // Infinity
console.log( Math.max() ); // -Infinity
这个返回 false:
console.log( Math.min() < Math.max() );
为什么会这样?
最佳答案
当然可以,因为 Math.min
的起始编号应该是 Infinity
。所有小于正无穷大的数字都应该是列表中最小的,如果没有更小的。
Math.max
也是一样的;如果没有更大的数,则所有大于负无穷大的数都应该是最大的。
所以对于你的第一个例子:
Math.min(5)
其中 5
小于正无穷大(Infinity
)它将返回 5
.
更新
使用数组参数调用 Math.min()
和 Math.max
可能不适用于每个平台。您应该改为执行以下操作:
Math.min.apply(null, [ 1, 2, 3, 4 , 5 ]);
第一个参数是作用域参数。因为 Math.min()
和 Math.max()
是“静态”函数,我们应该将范围参数设置为 null。
关于javascript - 为什么 Math.min() 返回正无穷大,而 Math.max() 返回负无穷大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8848779/