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

作者:mrr 时间:2024-05-09 10:39:14 

下面给大家介绍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时,默认为上文,


Math.max.apply(null, arr)

可认为是


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。


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

总结

以上所述是小编给大家介绍的js中apply和Math.max()函数的问题及区别介绍网站的支持!

标签:js,math.max,apply
0
投稿

猜你喜欢

  • Python 加密与解密小结

    2021-04-28 00:35:47
  • asp自动补全html标签自动闭合(正则表达式)

    2013-06-01 20:01:59
  • Python中的//符号是什么意思呢

    2023-11-18 10:18:27
  • JavaScript模板解析演示实例

    2009-10-19 23:16:00
  • Pytorch如何把Tensor转化成图像可视化

    2021-11-03 20:20:22
  • sql语句之数据操作介绍

    2024-01-22 18:09:39
  • python数组中的 k-diff 数对例题解析

    2022-03-30 18:21:47
  • ASP读取Exif信息无组件实现过程

    2009-02-09 12:52:00
  • Python数据分析 Numpy 的使用方法

    2023-01-14 15:12:36
  • 数据库技巧——MySQL十大优化技巧

    2011-01-31 16:44:00
  • 使用Python实现毫秒级抢单功能

    2022-10-17 18:46:16
  • 教你使用Python画棵圣诞树完整代码

    2022-04-12 11:29:57
  • Python彻底删除文件夹及其子文件方式

    2022-07-27 04:18:53
  • 跟老齐学Python之让人欢喜让人忧的迭代

    2022-10-02 14:33:23
  • 学习Python中一些实用的库

    2022-11-02 13:55:56
  • 防盗链接ASP函数

    2011-03-07 11:02:00
  • 详解pytorch的多GPU训练的两种方式

    2023-08-04 09:58:29
  • Python numpy中矩阵的基本用法汇总

    2021-10-23 06:37:26
  • 利用Python在一个文件的头部插入数据的实例

    2023-02-06 13:04:33
  • Python的mysql数据库的更新如何实现

    2024-01-28 13:43:12
  • asp之家 网络编程 m.aspxhome.com