6
回答
这种写法是js原生还是jquery
Math.min.apply(null,boxArr)中的apply似乎是js原生的,另外,那个null是做啥的,对了这个boxArr是数组。
举报
ziluopao
发帖于1年前 6回/605阅
共有6个答案 最后回答: 1年前
原生的。本来要一个一个传多个参数进入拿出最小的,但是程序中又不知道到底会有多少个参数,只能把要取出最小的所以数据放到一个数组中去,然而这个函数本身又是不支持数组的,所以只能这么写。

原生的。

就是把 boxArr 这个数组中的元素当参数传给 Math.min() 函数,而第一个参数为 null 是让 Math.min() 函数里的 this 为 NULL。

假设 boxArr = [6, 10, 2],那么 Math.min.apply(null,boxArr); 的效果类似于 Math.min(6, 10, 2)。

--- 共有 1 条评论 ---
maradona就是不太清楚这种用法到底有什么好处 1年前 回复

apply是改变this的指向执行min函数,this会指向第一个参数,传null会指向window,boxArr就是min的参数。

还有个功能一样的函数叫call。

调用函数,并用指定对象替换函数的 this 值,同时用指定数组替换函数的参数。

apply([thisObj[,argArray]])

参数
thisObj 可选。要用作 this 对象的对象。
argArray 可选。要传递到函数的一组参数。
备注
如果 argArray 不是有效对象,则会出现“应为对象”错误。
如果既未提供 argArray 也未提供 thisObj,则原始 this 对象将被用作 thisObj 且不会传递任何参数。
顶部