时间:2021-05-26
下面给大家介绍js中apply和Math.max()函数的问题,具体内容如下所示:
var arr=[1,3,6,3,7,9,2];console.log(Math.max.apply(null,arr));一直搞不懂为什么这样可以算出一个数组的最大值?一直想不明白,请js高手指教一下。
答案1
Function.apply()是JS的一个OOP特性,一般用来模拟继承和扩展this的用途,对于上面这段代码,可以这样去理解:
XXX.apply是一个调用函数的方法,其参数为:apply(Function, Args),
Function为要调用的方法,Args是参数列表,当Function为null时,默认为上文,
即
可认为是
apply(Math.max, arr)然后,arr是一个参数列表,对于max方法,其参数是若干个数,即
Math.max(a, b, c, d, ...)当使用apply时,把所有参数加入到一个数组中,即
arr = [a, b, c, d, ...]代入到原式,
Math.max.apply(null, [a, b, c, d, ...])实际上等同于
Math.max(a, b, c, d, ...)在此处,使用apply的优点是在部分JS引擎中提升性能。
答案2
Math.max()方法,支持传递多个参数,比如:Math.max(1,4,2,3,7,5,6)
但是它不支持直接传递一个数组作为参数,比如:Math.max(new Array(1,4,2,3,7,5,6))。
这里,只要我们有方法把数组,一个一个拆分开来,传递到Math.max()方法中,就实现了传递数组的方法。
所有函数都有apply(作用域链,参数)这个方法,这个函数的“参数”,接收一个数组,并且是将数组中的每个值,分开来,传递给调
补充:
Javascript中Math.max.apply和Math.max的区别
Javascript中的Math.max方法可以求出给定参数中最大的数。
> Math.max('1','2','3.1','3.2')< 3.2> Math.min(1,0,-1)< -1但如果是数组,就不能这样调用了。
此时就用到了apply方法:
apply 方法 (Function) (JavaScript)调用函数,并用指定对象替换函数的 this 值,同时用指定数组替换函数的参数。apply([thisObj[,argArray]])thisObj 可选。 要用作 this 对象的对象。argArray 可选。 要传递到函数的一组参数。
巧妙地使数组也可以调用Math.max和Math.min。
总结
以上所述是小编给大家介绍的js中apply和Math.max()函数的问题及区别介绍,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
java中的max函数在Math中应用如下:inta=34;intb=45;intans=Math.max(34,45);那么ans的值就是45.以上这篇jav
最近在做一个小案例的时候遇到了Math.max.apply这么一个用法,之前很少遇到过感觉挺有趣的,就记录一下。1Math.max语法:Math.max(n1,
Math.min()和Math.max()用法相似。两个方法用来获取给定的一组数值中的最大值或最小值,但是却不接受数组作为参数。当然可以写个函数遍历比较之类的等
Math对象方法//返回最大值varmax=Math.max(95,93,90,94,98);console.log(max);//返回最小值varmin=Ma
实例如下所示:$(document).on("scroll",function(){//真实内容的高度varpageHeight=Math.max(docume