首頁 web前端 js教程 js中apply和Math.max()函數介紹

js中apply和Math.max()函數介紹

Mar 28, 2018 am 09:05 AM
apply javascript

本文主要跟大家介紹了js中apply和Math.max()函數的問題,在文章底部給大家提到了js中Math.max.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
登入後複製

相關推薦:

JavaScript之call和apply

以上是js中apply和Math.max()函數介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何使用WebSocket和JavaScript實現線上語音辨識系統 如何使用WebSocket和JavaScript實現線上語音辨識系統 Dec 17, 2023 pm 02:54 PM

如何使用WebSocket和JavaScript實現線上語音辨識系統

WebSocket與JavaScript:實現即時監控系統的關鍵技術 WebSocket與JavaScript:實現即時監控系統的關鍵技術 Dec 17, 2023 pm 05:30 PM

WebSocket與JavaScript:實現即時監控系統的關鍵技術

如何使用WebSocket和JavaScript實現線上預約系統 如何使用WebSocket和JavaScript實現線上預約系統 Dec 17, 2023 am 09:39 AM

如何使用WebSocket和JavaScript實現線上預約系統

如何利用JavaScript和WebSocket實現即時線上點餐系統 如何利用JavaScript和WebSocket實現即時線上點餐系統 Dec 17, 2023 pm 12:09 PM

如何利用JavaScript和WebSocket實現即時線上點餐系統

簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

簡易JavaScript教學:取得HTTP狀態碼的方法

JavaScript與WebSocket:打造高效率的即時天氣預報系統 JavaScript與WebSocket:打造高效率的即時天氣預報系統 Dec 17, 2023 pm 05:13 PM

JavaScript與WebSocket:打造高效率的即時天氣預報系統

如何在JavaScript中取得HTTP狀態碼的簡單方法 如何在JavaScript中取得HTTP狀態碼的簡單方法 Jan 05, 2024 pm 01:37 PM

如何在JavaScript中取得HTTP狀態碼的簡單方法

javascript如何使用insertBefore javascript如何使用insertBefore Nov 24, 2023 am 11:56 AM

javascript如何使用insertBefore

See all articles