亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

怎么解讀Math min.apply?

怎么解讀Math min.apply?

清風流光 2017-05-17 22:18:01
function?min(target){ return?Math.min.apply(0,target); } alert(min([1,2,3,4,5,6,]));Math.min是一個方法去掉了 () ,這是不是說明所有的方法去掉括號后都是一串函數?apply 作用是替換作用域 后面的第一個參數0是什么意思,我記得應該是this或者是arguments callee,第二個參數換成arguments 結果是NaN 這又是為什么??
查看完整描述

1 回答

已采納
?
千秋此意

TA貢獻158條經驗 獲得超188個贊

因為Math.min方法不支持直接傳入一個數組,必須一個個參數傳入,而且每個參數必須是數字(或者能隱試轉換成數字的值),只要參數里有一個值不是數字最后得出的結果就是NaN。

上面說了Math.min方法不能直接傳入一個數組,所以就有了Math.min.apply(null, args);

aplly接受兩個參數,第一個參數為指定當前函數調用時的this值,不過正如樓上所說你這個問題里的第一個參數并不是重點,隨便什么都行,主要是為了使用apply的第二個參數,其第二個參數為一個數組(類數組),調用函數時這個數組里的每個元素都會被當成參數傳入該函數,也就是相當于把這你這個數組里所有的元素都傳入了 Math.min() 方法,至于為什么結果是NaN,原因在在一開頭就說了,Math.min 方法的參數必須是數字,而你傳入的 [1,2,3,4,5,6, ] 這一組參數,最后一項為 undefined,結果就是NaN了。

查看完整回答
2 反對 回復 2017-05-17
  • 清風流光
    清風流光
    那是不是說 apply 能把數組轉化成類數組 相當于轉化成單個參數 并把它的作用域附給指定函數 第一個參數不重要 它表示的是什么?
  • 千秋此意
    千秋此意
    首先并不是apply的第一個參數不重要,而是在你這條語句里apply的第一個參數不重要。。第一個參數為指定當前函數調用時的this值,如果你傳的是個對象,那么你這個函數調用時作用域內的this就是指向這個對象,如果為一個數字、字符串、布爾值,那么內部的this就會指向該值的自動包裝對象,如果傳入的是null和undefined,那么內部的this就會指向全局對象。。apply并不能把數組轉換成類數組,不過效果確實是把一個數組里的元素當成單個實參傳入函數。。你再想想吧。。望采納~
?
慕先生4543078

TA貢獻52條經驗 獲得超38個贊

忘了說了,一般第一個參數寫Math
查看完整回答
反對 回復 2017-05-17
?
慕先生4543078

TA貢獻52條經驗 獲得超38個贊

apply方法吧,你試試第二個參數填個空的大括號,也是可以正常調用的。。。 至于為啥。。。誰知道呢,反正就是能這么用。
查看完整回答
反對 回復 2017-05-17
?
后知后覺88

TA貢獻39條經驗 獲得超10個贊

在這個例子中 ,第一個參數隨便是什么對象都行,? 主要是為了實現多個值比較? 也就是主要為了使用第二個參數

第二個參數? 當然要和函數的形參一致才行??? 用arguments? 就都用 arguments

不知道你明白了沒....

查看完整回答
反對 回復 2017-05-17
  • 1 回答
  • 0 關注
  • 4205 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號