js中apply和Math.max()函数的问题及区别介绍
下面给大家介绍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中apply和Math.max()函数的问题及区别介绍
-
分享js中apply和Math.max()函数的使用实例
-
pandas中apply和transform方法的性能比较及区别介绍
-
js中apply和Math.max()函数的问题及区别介绍
-
分享js中apply和Math.max()函数的使用实例
-
js中apply和Math.max()函数的问题及区别介绍
-
pandas中apply和transform方法的性能比较及区别介绍
-
js中call、apply和bind的区别和原理及扩展的高级运用
-
js中apply和Math.max()函数的问题及区别介绍
-
js中apply和Math.max()函数介绍