国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

js中apply和Math.max()函數的問題及區別介紹

2019-11-19 14:06:13
字體:
來源:轉載
供稿:網友

下面給大家介紹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()函數的問題及區別介紹,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平潭县| 连平县| 白河县| 晴隆县| 河曲县| 屏山县| 清新县| 化德县| 交口县| 南城县| 义马市| 观塘区| 鄂伦春自治旗| 扎赉特旗| 宿州市| 西华县| 溧水县| 景东| 左贡县| 江永县| 武邑县| 贡山| 运城市| 蓬溪县| 亳州市| 吴江市| 罗源县| 芦溪县| 那坡县| 渑池县| 新巴尔虎左旗| 晋宁县| 封开县| 成都市| 云南省| 邯郸县| 阿拉善右旗| 湖州市| 兰考县| 二连浩特市| 新兴县|