乐趣区

关于前端:为什么不带参数的-Mathmax-返回Infinity

作者:Dmitri Pavlutin
译者:前端小智
起源:Dmitri Pavlutin

有幻想,有干货,微信搜寻 【大迁世界】 关注这个在凌晨还在刷碗的刷碗智。

本文 GitHub https://github.com/qq449245884/xiaozhi 已收录,有一线大厂面试残缺考点、材料以及我的系列文章。

Math.max() 是 JS 内置的办法,能够从传入的参数中,返回最大的一个。例如:

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

如果 Math.max() 只应用一个参数,后果是怎么样的?

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

正如预期的那样,一个数字的最大值就是它自身。

然而,如果调用不带参数 Math.max() 后果又是怎么样的呢?

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

不带参数的 Math.max() 返回的后果是 -Infinity,接下来,咱们来看看为什么会这样。

一个数组中的最大值

在探讨这个问题之前,咱们先来 Math.max()是如何从数组中失去最大值的。

Math.max(num1, num2, ..., numN)承受多个数字参数,并返回它们的最大数量。

如果想从数组中获取最大值,咱们能够应用开展运算符:

const numbers1 = [1, 2, 3];

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

2. 两个数组中的最大值

当初,咱们来看看乏味的事件,给定两个数组,咱们先确定每个数组中的最大值,而后在从获取这两个最大值在确定出其中的最大值。

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

数组 [1, 2, 3] 最大值是 3,数组 [0, 6]大最值是 6,最初 3 和 6 的最大值是 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

当初,当第一个数组为空时,下面的最大值也是 6

这里比拟乏味的是 Math.max(...numbers1) 的返回值,当 numbers1 数组为空时,这与调用不带参数的 Math.max() 雷同,后果是 -Infinity

所以 Math.max(max1,max2) 等价于 Math.max(-Infinity, 6),后果为 6。

当初就晓得为什么 Math.max() 在不带参数的状况下调用时返回 -Infinity: 这是在一个空集合上定义 max 函数的一种形式。

这与加法相似,max 的 -Infinity 和加法的 0 是一样的。

Math.min()也具备雷同的行为 - 当不带参数调用时,它将返回Infinity

对于对实数的最大运算,-Infinity称为Identity 元素

到这里本文就完啦,这里来个挑战:你是否编写一个与 Math.max() 齐全一样的 sum(num1, num2, ..., numN)函数,它的性能就是求所有元素的和,

Identity 元素 是什么,有懂的没,欢送留言补充一下知识点。


代码部署后可能存在的 BUG 没法实时晓得,预先为了解决这些 BUG,花了大量的工夫进行 log 调试,这边顺便给大家举荐一个好用的 BUG 监控工具 Fundebug。

原文:https://dmitripavlun.com/javs…

交换

有幻想,有干货,微信搜寻 【大迁世界】 关注这个在凌晨还在刷碗的刷碗智。

本文 GitHub https://github.com/qq44924588… 已收录,有一线大厂面试残缺考点、材料以及我的系列文章。

退出移动版