這篇文章主要介紹了js中apply和Math.max()函數的問題,本文為大家帶來兩種答案,每一種答案給大家介紹的非常詳細,在文章底部給大家提到了js中Math.max.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, ...)
arr = [a, b, c, d, ...]
Math.max.apply(null, [a, b, c, d, ...])
Math.max(a, b, c, d, ...)
答案2
Math.max()
方法,支援傳遞多個參數,例如:
Math.max(1,4,2,3,7,5,6)
但是它不支援直接傳遞一個陣列作為參數,例如:
Math.max(new Array( 1,4,2,3,7,5,6))
補充:
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 方法 (Function) (JavaScript) 调用函数,并用指定对象替换函数的 this 值,同时用指定数组替换函数的参数。 apply([thisObj[,argArray]]) thisObj 可选。 要用作 this 对象的对象。 argArray
# 可選。要傳遞到函數的一組參數。
> Math.max.apply(null, ['1','2','3.1','3.2']) < 3.2 > Math.min.apply(null, [1,0,-1]) < -1
###
以上是js中apply和Math.max()函數的問題及區別介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!