为什么我不能在 Javascript 中编写 [1,2,3].reduce(Math.max) ?

发布于 2024-11-26 09:57:07 字数 503 浏览 0 评论 0原文

可能的重复:
如何使用 Math.max 等作为高阶函数订单功能

使用 Mozilla 的 Javascript 1.6 数组“扩展”函数(map、reduce、filter 等),为什么下面的函数按预期工作:

var max = [1,2,3].reduce(function(a,b) { return Math.max(a,b); });

但是下面的函数不起作用(它产生 NaN):

var max2 = [1,2,3].reduce(Math.max);

是吗?因为 Math.max 是一个可变参数函数?

Possible Duplicate:
How to use Math.max, etc. as higher-order functions

Using Mozilla's Javascript 1.6 array 'extension' functions (map, reduce, filter etc.), why is it that the following works as expected:

var max = [1,2,3].reduce(function(a,b) { return Math.max(a,b); });

But the following does not work (it produces NaN):

var max2 = [1,2,3].reduce(Math.max);

Is it because Math.max is a variadic function?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

护你周全 2024-12-03 09:57:07

Math.max 不知道如何处理所有额外的变量 function(previousValue, currentValue, index, array) 主要是最后的数组。

[].reduce.call([1,2,3,6],function(a,b) { return Math.max(a,b); });

这有效并使用 .call

Math.max does not know what to do with all the extra variables function(previousValue, currentValue, index, array) mainly that array at the end.

[].reduce.call([1,2,3,6],function(a,b) { return Math.max(a,b); });

This works and uses .call

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文