美文网首页js css html
为什么不带参数的 Math.max() 返回 -Infinity

为什么不带参数的 Math.max() 返回 -Infinity

作者: 源大侠 | 来源:发表于2023-04-16 08:20 被阅读0次

Math.max()是内置的 JavaScript 函数,从给定的一组数字中返回最大值。

其语法如下:

Math.max(value1[, value2, ...])

例如,让我们从 1,2 以及 3 中找到最大的数字:

Math.max(1, 2, 3); // => 3

正如预期的那样,函数的返回值为 3。

当调用 Math.max()时只使用一个数字参数时:

Math.max(1); // => 1

显然,一个数字的最大值是其本身。

但如果调用 Math.max() 时不传递任何参数,那会发生什么?

Math.max(); // => -Infinity

乍看之下上述代码的执行结果似乎有点出人意料,在没有参数的情况下调用 Math.max() 会返回 -Infinity。让我们来看看为什么会发生这种情况,以及为什么要发生这种情况。

一个数组的最大值
如果要确定一个数组的最大数字,可以在数组上使用扩展运算符:

const numbers1 = [1, 2, 3];

Math.max(...numbers1); // => 3

两个数组的最大值
现在,让我们尝试从给定两个数字数组中,确定每个数组的最大数,然后确定这两个最大值中的最大值。

const numbers1 = [1, 2, 3];
const numbers2 = [0, 6];

const max1 = Math.max(...numbers1);
const max2 = Math.max(...numbers2);

max1; // 3
max2; // 6
Math.max(max1, max2); // => 6

如果其中一个数组为空,如何尝试确定最大数组呢?

const numbers1 = [];
const numbers2 = [0, 6];

const max1 = Math.max(...numbers1);
const max2 = Math.max(...numbers2);

max1; // -Infinity
max2; // 6
Math.max(max1, max2); // => 6

从上述代码可以看出,Math.max(...[]) 与不带参数的Math.max()结果相同,均为-Infinity

然后 Math.max(max1, max2)Math.max(-Infinity, 6),其结果为 6。

尾声
现在就很清楚为什么在不带参数的情况下Math.max()返回 -Infinity了,无论numbers2的最大值是多少,为了让空数组 numbers1(等同于不带参数的Math.max())的最大值小于numbers2 的最大值,numbers1 的最大值只能是负无穷,即-Infinity

同理,Math.min() return Infinity

也因此:

Math.min() > Math.max(); // => true

相关文章

  • 为什么不带参数的 Math.max() 返回-Infinity?

    Math.max()是 JS 内置的方法,可以从传入的参数中,返回最大的一个。例如: Math.max(1,2,3...

  • Math.max()和Math.min()比较

    因为Math.min() 返回 Infinity, 而 Math.max()返回 -Infinity

  • Math.max() < Math.min()

    为什么这么设计呢?因为在Math.max这个方法是用来比较大小的,默认比较列表中第一个数就是-Infinity,这...

  • Swift 方法

    1、不带返回值的方法 2、带返回值的方法 3、带参数标签的方法,只显示参数标签,不显示参数名 4、带有默认参数值的...

  • 从零开始Swift之函数

    有参数没返回值 没有参数的函数,有返回值 函数定义在函数名称后面仍然需要括号,即使它不带任何参数,当函数被调用时,...

  • swift (函数)

    如果定义的是对象函数结构为 如果是类函数,则结构多了一个class 具体实例如下。 不带参数,不带返回值 带参数,...

  • 求数组最大或最小值的方法总结

    Math.max JavaScript 提供了 Math.max 函数返回一组数中的最大值 用法: 值得注意的是:...

  • 求数组的最大值和最小值

    Math.max JavaScript 提供了 Math.max 函数返回一组数中的最大值,用法是: 值得注意的是...

  • fun (函数)

    关键字 中缀符号 参数 默认参数 命名参数 不带返回值的参数 单表达式函数 变长参数 函数范围局部函数成员函数泛型...

  • Java8函数式接口编程

    //不带返回值、不带参数的接口//函数式接口 可以 带有静态方法 和default 默认方法//一个函数接口 只...

网友评论

    本文标题:为什么不带参数的 Math.max() 返回 -Infinity

    本文链接:https://www.haomeiwen.com/subject/tbsfjdtx.html