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

亚连
Lepaskan: 2018-05-28 17:10:41
asal
1752 orang telah melayarinya

这篇文章主要介绍了js中apply和Math.max()函数的问题,本文给大家带来两种答案,每一种答案给大家介绍的非常详细,在文章底部给大家提到了js中Math.max.apply和Math.max的区别,感兴趣的朋友一起看看吧

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

var arr=[1,3,6,3,7,9,2];
console.log(Math.max.apply(null,arr));
Salin selepas log masuk

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

答案1

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

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

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

Math.max.apply(null, arr)
Salin selepas log masuk

可认为是

apply(Math.max, arr)
Salin selepas log masuk

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

Math.max(a, b, c, d, ...)
Salin selepas log masuk
Salin selepas log masuk

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

arr = [a, b, c, d, ...]
Salin selepas log masuk

代入到原式,

Math.max.apply(null, [a, b, c, d, ...])
Salin selepas log masuk

实际上等同于

Math.max(a, b, c, d, ...)
Salin selepas log masuk
Salin selepas log masuk

在此处,使用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
Salin selepas log masuk


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

此时就用到了apply方法:

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

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

> Math.max.apply(null, [&#39;1&#39;,&#39;2&#39;,&#39;3.1&#39;,&#39;3.2&#39;])
< 3.2
> Math.min.apply(null, [1,0,-1])
< -1
Salin selepas log masuk

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

Ajax上传实现根据服务器端返回数据进行js处理的方法

双层ajax嵌套(可多层)用法实例

Ajax实现弹出式无刷新城市选择功能代码

Atas ialah kandungan terperinci js中apply和Math.max()函数的问题及区别介绍. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan