JavaScript应用

JavaScript应用,javascript,Javascript,中有一个示例提供了以下代码来绕过JavaScript的Math.min()函数,该函数需要一个可变长度的列表 Example: Math.min(1,2,3,4,5); 但是,如果您有一个列表:[1,2,3,4,5],则会出现问题,因为您不必在列表中循环,以跟踪当前的min 书中说使用以下代码来解决这个问题 function smallest(arr) { return Math.min.apply(Math, arr); } alert(smallest([1,2,3,4,5,

中有一个示例提供了以下代码来绕过JavaScript的
Math.min()
函数,该函数需要一个可变长度的列表

Example: Math.min(1,2,3,4,5);
但是,如果您有一个
列表:[1,2,3,4,5]
,则会出现问题,因为您不必在列表中循环,以跟踪当前的min

书中说使用以下代码来解决这个问题

function smallest(arr) {
   return Math.min.apply(Math, arr);   
}

alert(smallest([1,2,3,4,5,6,-33]));
发动机罩下的
Math.min.apply(Math,arr)
会发生什么

调用具有给定
值和作为数组(或类似数组的对象)提供的参数的函数

因此,基本上,它的工作原理就像您在直接调用函数时将数组的每个项作为单独的参数传递一样

.apply()
的第一个参数设置函数要使用的
this
的值,因此您的示例通过
Math
,使其工作原理与您直接将其称为
Math.min(…)
一样

请注意,您可以对任何函数执行相同的操作:

function someFunc(a,b,c,d) { ... }

someFunc(1,2,3,4);
// or
someFunc.apply(null, [1,2,3,4]);
“使用给定的
值和作为数组(或类似数组的对象)提供的参数调用函数。”

因此,基本上,它的工作原理就像您在直接调用函数时将数组的每个项作为单独的参数传递一样

.apply()
的第一个参数设置函数要使用的
this
的值,因此您的示例通过
Math
,使其工作原理与您直接将其称为
Math.min(…)
一样

请注意,您可以对任何函数执行相同的操作:

function someFunc(a,b,c,d) { ... }

someFunc(1,2,3,4);
// or
someFunc.apply(null, [1,2,3,4]);
允许在给定实例上调用方法,并将参数作为数组提供。所以当你写作的时候

Math.min.apply(Math, arr);   
您正在调用
Math
类上的
min
方法,并将
arr
作为参数传递。

允许您在给定实例上调用方法,并将参数作为数组提供。所以当你写作的时候

Math.min.apply(Math, arr);   

您正在调用
Math
类上的
min
方法,并将
arr
作为参数传递。

根据MDN文档:

使用给定的此值和作为数组(或类似数组的对象)提供的参数调用函数


根据MDN文档的要求:

使用给定的此值和作为数组(或类似数组的对象)提供的参数调用函数

可能的重复可能的重复