Math.max.apply()工作如何?
Math.max.apply()
<!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <title>JS Bin</title> </head> <body> <script> var list = ["12","23","100","34","56", "9","233"]; console.log(Math.max.apply(Math,list)); </script> </body> </html>
上面的代码在列表中找到最大数。谁能告诉我下面的代码如何工作?如果我通过的话似乎可行null or Math.
null or Math.
console.log(Math.max.apply(Math,list));
是否所有user-defined/Native functions我们都可以使用的调用和应用方法?
user-defined/Native functions
apply接受一个数组,并将该数组作为参数应用于实际函数。所以,
apply
Math.max.apply(Math, list);
可以理解为
Math.max("12", "23", "100", "34", "56", "9", "233");
因此,这apply是一种将数据数组作为参数传递给函数的便捷方法。记得
console.log(Math.max(list)); # NaN
将不起作用,因为max不接受数组作为输入。
max
使用的另一个好处是apply,您可以选择自己的上下文。您传递给apply任何函数的第一个参数将是该this函数的内部。但是,max不依赖于当前上下文。因此,任何事物都可以代替Math。
this
Math
console.log(Math.max.apply(undefined, list)); # 233 console.log(Math.max.apply(null, list)); # 233 console.log(Math.max.apply(Math, list)); # 233
由于apply实际上是在中定义的Function.prototype,因此apply默认情况下,任何有效的JavaScript函数对象都将具有函数。
Function.prototype