作者:DmitriPavlutin译者:前端小智来源:DmitriPavlutin有梦想,有干货,微信搜索【大运世界】洗碗智慧。本文已收录到GitHubhttps://github.com/qq449245884/xiaozhi,里面有完整的测试站点、资料和我的一线厂商访谈系列文章。Math.max()是JS中的一个内置方法,可以返回传入参数中最大的一个。示例:Math.max(1,2,3);//=>3如果Math.max()只接受一个参数,结果会是什么?数学.max(1);//=>1正如预期的那样,数字的最大值就是它本身。但是不带参数调用Math.max()的结果呢?数学.max();//=>-Infinity不带参数的Math.max()返回-Infinity。接下来,让我们看看为什么会这样。数组中的最大值在讨论这个问题之前,让我们先看看Math.max()是如何从数组中获取最大值的。Math.max(num1,num2,...,numN)接受多个数字参数并返回其中的最大数量。如果我们想从数组中获取最大值,我们可以使用扩展运算符:constnumbers1=[1,2,3];Math.max(...numbers1);//=>32.两个数组中的最大值现在,让我们来看看有趣的事情。给定两个数组,我们首先确定每个数组中的最大值,然后从这两个最大值中确定最大值。constnumbers1=[1,2,3];常量数字2=[0,6];constmax1=Math.max(...numbers1);constmax2=Math.max(...numbers2);max1;//3max2;//6Math.max(max1,max2);//=>6数组[1,2,3]的最大值为3,数组[0,6]的最大值为6,最后3和6的最大值为6。没问题,让我们继续。如果数组为空,结果会是什么?让我们试一试:constnumbers1=[];常量数字2=[0,6];constmax1=Math.max(...numbers1);constmax2=Math.max(...numbers2);max1;//-Infinitymax2;//6Math.max(max1,max2);//=>6现在,当第一个数组为空时,大于6的最大值也为空。这里有趣的是Math.max(...numbers1)的返回值,这与调用Math.max相同()当numbers1数组为空时不带参数,结果为-Infinity。所以Math.max(max1,max2)等价于Math.max(-Infinity,6),结果为6。现在你知道为什么Math.max()在不带参数调用时返回-Infinity了:这是一种定义方式空集合上的max函数。这个和加法类似,max的-Infinity和加法的0一样。Math.min()也有相同的行为——当不带参数调用时它返回Infinity。关于对实数的最大运算,-Infinity称为恒等元。这篇文章到此为止。这里有一个挑战:你能写一个和Math.max()完全一样的sum(num1,num2,...,numN)函数吗,它的功能是求所有元素的和,什么是Identity元素,如果你懂了欢迎留言补充知识点。代码部署后可能存在的bug,无法实时获知。事后为了解决这些bug,花费了大量的时间在日志调试上。顺便推荐一个好用的bug监控工具Fundebug。原文:https://dmitripavlun.com/javs...交流有梦想,有干货,微信搜索【走向世界的大招】关注这位凌晨还在洗碗的洗碗智慧。本文GitHubhttps://github.com/qq44924588...已收录,有完整的测试站点、资料和我的一线厂商访谈系列文章。
