這期內(nèi)容當中小編將會給大家?guī)碛嘘Papply和Math.max()函數(shù)在JavaScript中有什么區(qū)別,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
如下所示:
var arr=[1,3,6,3,7,9,2]; console.log(Math.max.apply(null,arr));
一直搞不懂為什么這樣可以算出一個數(shù)組的大值?一直想不明白,請js高手指教一下。
答案1
Function.apply()是JS的一個OOP特性,一般用來模擬繼承和擴展this的用途,對于上面這段代碼,可以這樣去理解:
XXX.apply是一個調(diào)用函數(shù)的方法,其參數(shù)為:apply(Function, Args),
Function為要調(diào)用的方法,Args是參數(shù)列表,當Function為null時,默認為上文,
即
Math.max.apply(null, arr)
可認為是
apply(Math.max, arr)
然后,arr是一個參數(shù)列表,對于max方法,其參數(shù)是若干個數(shù),即
Math.max(a, b, c, d, ...)
當使用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)
補充:
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
上述就是小編為大家分享的apply和Math.max()函數(shù)在JavaScript中有什么區(qū)別了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創(chuàng)新互聯(lián)成都網(wǎng)站設計公司行業(yè)資訊頻道。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網(wǎng)頁題目:apply和Math.max()函數(shù)在JavaScript中有什么區(qū)別-創(chuàng)新互聯(lián)
當前鏈接:http://aaarwkj.com/article12/coecdc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、虛擬主機、定制網(wǎng)站、軟件開發(fā)、服務器托管、App設計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容