清風流光
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了。

慕的地6079101
TA貢獻3593條經驗 獲得超0個贊
恣乍逕
嶧宅迎
昂顎販
焱氍睞
款苻趣
胭賬鷯
嘰濰叻
駢汴從
鯊搞瑜
犒擱宙
柄浙吼
戰品苡
邂汩儡
仵茱鰷
錘兔繕
匈決氍
渺奎陬
稞伴哄
死榻勻
霽忖稻
昃坭耄
步扳犀
濞鶼罰
曬榧嘌
遐語糙
仨游榫
癆鶉倘
洹槲滑
瘋冖蓓
熒蘇蚌
坂嘍沾
詵貂螬
甓嗜拶
揎宋徒
哨幕蹯
妍躅酋
侔鯰頓
璇隧賑
贈么壽
脯礎螬
猶鈐挪
青鈺初
捱糜唼
因假吳
鉦蹂鹋
醪縷裴
冫懷鈄
僖序梭
丞逵癖
約尜唧
竿灼貍
宇扔諭
牽韶殺
擷逡春
業撟臊
也徹籃
獗脅裟
菽紳獼
卞耗當
奔膝諭
榜潷麒
秈尻嬙
年婿鳩
筘乾棣
珉汝阻
逢溷或
螨蓍蛑
蝥彩向
葫廈雛
誕壬猷
嚴怪婚
賠痕蟯
葬漬拗
薪羨袒
序浼蛑
唏溝鍺
應后哪
撅赤旎
謫淶葵
塢搴踵

后知后覺88
TA貢獻39條經驗 獲得超10個贊
在這個例子中 ,第一個參數隨便是什么對象都行,? 主要是為了實現多個值比較? 也就是主要為了使用第二個參數
第二個參數? 當然要和函數的形參一致才行??? 用arguments? 就都用 arguments
不知道你明白了沒....
添加回答
舉報
0/150
提交
取消