js中apply和Math.max()函数的问题及区别介绍

前端之家收集整理的这篇文章主要介绍了js中apply和Math.max()函数的问题及区别介绍前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

下面给大家介绍js中apply和Math.max()函数的问题,具体内容如下所示:

一直搞不懂为什么这样可以算出一个数组的最大值?一直想不明白,请js高手指教一下。

答案1

Function.apply()是JS的一个OOP特性,一般用来模拟继承和扩展this的用途,对于上面这段代码,可以这样去理解:

XXX.apply是一个调用函数方法,其参数为:apply(Function,Args),

Function为要调用方法,Args是参数列表,当Function为null时,默认为上文, 即

可认为是

然后,arr是一个参数列表,对于max方法,其参数是若干个数,即

当使用apply时,把所有参数加入到一个数组中,即

代入到原式,

实际上等同于

在此处,使用apply的优点是在部分JS引擎中提升性能

答案2

Math.max()方法支持传递多个参数,比如:Math.max(1,4,2,5,6)

但是它不支持直接传递一个数组作为参数,比如:Math.max(new Array(1,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,-1) < -1

但如果是数组,就不能这样调用了。

此时就用到了apply方法

方法 (Function) (JavaScript) 调用函数,并用指定对象替换函数的 this 值,同时用指定数组替换函数的参数。 apply([thisObj[,argArray]]) thisObj   可选。 要用作 this 对象的对象。 argArray

  可选。 要传递到函数的一组参数。 巧妙地使数组也可以调用Math.max和Math.min。

Math.max.apply(null,['1','3.2']) < 3.2 > Math.min.apply(null,[1,-1]) < -1

总结

以上所述是小编给大家介绍的js中apply和Math.max()函数的问题及区别介绍。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持

原文链接:https://www.f2er.com/js/33005.html

猜你在找的JavaScript相关文章