js中apply和Math.max()函數(shù)的問題及區(qū)別介紹
下面給大家介紹js中apply和Math.max()函數(shù)的問題,具體內(nèi)容如下所示:
var arr=[1,3,6,3,7,9,2]; console.log(Math.max.apply(null,arr));
一直搞不懂為什么這樣可以算出一個數(shù)組的最大值?一直想不明白,請js高手指教一下。
答案1
Function.apply()是JS的一個OOP特性,一般用來模擬繼承和擴(kuò)展this的用途,對于上面這段代碼,可以這樣去理解:
XXX.apply是一個調(diào)用函數(shù)的方法,其參數(shù)為:apply(Function, Args),
Function為要調(diào)用的方法,Args是參數(shù)列表,當(dāng)Function為null時,默認(rèn)為上文,
即
Math.max.apply(null, arr)
可認(rèn)為是
apply(Math.max, arr)
然后,arr是一個參數(shù)列表,對于max方法,其參數(shù)是若干個數(shù),即
Math.max(a, b, c, d, ...)
當(dāng)使用apply時,把所有參數(shù)加入到一個數(shù)組中,即
arr = [a, b, c, d, ...]
代入到原式,
Math.max.apply(null, [a, b, c, d, ...])
實際上等同于
Math.max(a, b, c, d, ...)
在此處,使用apply的優(yōu)點是在部分JS引擎中提升性能。
答案2
Math.max()方法,支持傳遞多個參數(shù),比如:Math.max(1,4,2,3,7,5,6)
但是它不支持直接傳遞一個數(shù)組作為參數(shù),比如:Math.max(new Array(1,4,2,3,7,5,6))。
這里,只要我們有方法把數(shù)組,一個一個拆分開來,傳遞到Math.max()方法中,就實現(xiàn)了傳遞數(shù)組的方法。
所有函數(shù)都有apply(作用域鏈,參數(shù))這個方法,這個函數(shù)的“參數(shù)”,接收一個數(shù)組,并且是將數(shù)組中的每個值,分開來,傳遞給調(diào)
補(bǔ)充:
Javascript中Math.max.apply和Math.max的區(qū)別
Javascript中的Math.max方法可以求出給定參數(shù)中最大的數(shù)。
> Math.max('1','2','3.1','3.2')
< 3.2
> Math.min(1,0,-1)
< -1
但如果是數(shù)組,就不能這樣調(diào)用了。
此時就用到了apply方法:
apply 方法 (Function) (JavaScript) 調(diào)用函數(shù),并用指定對象替換函數(shù)的 this 值,同時用指定數(shù)組替換函數(shù)的參數(shù)。 apply([thisObj[,argArray]]) thisObj 可選。 要用作 this 對象的對象。 argArray
可選。 要傳遞到函數(shù)的一組參數(shù)。
巧妙地使數(shù)組也可以調(diào)用Math.max和Math.min。
> Math.max.apply(null, ['1','2','3.1','3.2']) < 3.2 > Math.min.apply(null, [1,0,-1]) < -1
總結(jié)
以上所述是小編給大家介紹的js中apply和Math.max()函數(shù)的問題及區(qū)別介紹,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
javascript 網(wǎng)站常用的iframe分割
就是一個頁面使用兩個iframe來調(diào)用內(nèi)容,實現(xiàn)頁面導(dǎo)航,更容易控制,可控制性好2008-06-06
ztree獲取當(dāng)前選中節(jié)點子節(jié)點id集合的方法
這篇文章主要介紹了ztree獲取當(dāng)前選中節(jié)點子節(jié)點id集合的方法,實例分析了ztree的方法transformToArray使用技巧,需要的朋友可以參考下2015-02-02
一文詳解如何在項目中和平時練習(xí)中應(yīng)用es6語法
ES6是JavaScript的一個版本,因為我們前面用到的vue默認(rèn)使用ES6語法開發(fā),所以我們在這一節(jié)補(bǔ)充ES6的知識點,下面這篇文章主要給大家介紹了關(guān)于如何在項目中和平時練習(xí)中應(yīng)用es6語法的相關(guān)資料,需要的朋友可以參考下2022-11-11

