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>
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max
上面的代码在列表中找到最大数。谁能告诉我下面的代码是如何工作的?如果我通过 null 或 Math.
console.log(Math.max.apply(Math,list));
是否所有的user-defined/Native functions
都有我们可以使用的调用和应用方法?
最佳答案
apply
接受一个数组并将该数组作为参数应用于实际函数。所以,
Math.max.apply(Math, list);
可以理解为,
Math.max("12", "23", "100", "34", "56", "9", "233");
因此,apply
是一种将数据数组作为参数传递给函数的便捷方式。记得
console.log(Math.max(list)); # NaN
将不起作用,因为 max
不接受数组作为输入。
还有一个好处,使用apply
,你可以选择你自己的上下文。您传递给任何函数的 apply
的第一个参数将是该函数内的 this
。但是,max
不依赖于当前上下文。因此,任何东西都可以代替 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
is actually defined in Function.prototype
,任何有效的 JavaScript 函数对象,默认情况下都将具有 apply
函数。
关于javascript - Math.max.apply() 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21255138/