JavaScript应用
中有一个示例提供了以下代码来绕过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,
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文档的要求:
使用给定的此值和作为数组(或类似数组的对象)提供的参数调用函数
可能的重复可能的重复