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条经验 获得超187个赞
因为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
提交
取消