js中apply和Math.max()函数的问题?
来源:互联网 发布:云计算 中国 编辑:程序博客网 时间:2024/05/16 05:05
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(作用域链,参数)这个方法,这个函数的“参数”,接收一个数组,并且是将数组中的每个值,分开来,传递给调用函数。
阅读全文
0 0
- js中apply和Math.max()函数的问题
- js中apply和Math.max()函数的问题?
- js call() apply()和Math.max实现得到数组中最大的一项
- apply、call和Math.max
- 关于js中call和apply函数的应用
- JS中math()函数相关问题
- js中Math的几个函数
- JS中的Math.ceil和Math.floor函数的用法
- JS中的Math.ceil和Math.floor函数的用法
- js中call和apply的用法
- js中call和apply的用法
- JS中apply和call的区别
- js中apply()和call()的区别
- js中call和apply的区别
- js中call和apply的区别
- js中call和apply的区别
- js中call和apply的异同
- js中apply和call的应用
- 对vue生命周期-钩子函数的理解
- 【算法】数组中出现次数超过一半的数字
- Java技术:Gif编码器(gifencoder)的实际应用(2)
- 斯特林数
- 【转】css中float left与float right的使用说明
- js中apply和Math.max()函数的问题?
- 用Python将Word中的内容写入Excel
- 两个有序链表序列的合并
- Redis-数据结构-跳跃表-skiplist
- spring-boot结合mysql整合mybatis
- 装饰模式
- 天天学Linux命令6--rm 命令
- ACM 1021 Fibonacci Again
- 完整安装vmware10和centOS6.4(64位)