javascript - 将 javascript Max 函数包装器转换为指向 Math.Max 的函数指针

标签 javascript

我参加了一次工作面试,他们要求我在白板上用 JavaScript 编写一个函数来查找数组中的最大值。 我写道:

function max(a) { return Math.max.apply(Math,a) }

他们说得好,但是如果您不想写出函数而只想将最大值指向 Math.max 该怎么办?我说我认为你做不到。我想他们说你可以这样做:

var max = Math.max.apply.bind(Math)

但是当我这样做时,我调用 max([1,2]) 会得到一个错误:

Uncaught TypeError: Function.prototype.apply was called on #<Object>, which is a object and not a function

你应该怎么做?

最佳答案

我想你想要

var max = Function.prototype.apply.bind(Math.max, Math);

也就是说,您创建一个函数,它将在 Math.max 上调用 Function.prototype.apply (就像您的 Math.max.apply >) 以 Math 作为第一个参数,并将新函数的参数(它应该是一个数组)重定向为 Function.prototype.apply 的附加参数。

然后,Function.prototype.apply 将在 Math 上调用 Math.max,将其数组参数传播为 Math 的参数。最大

但是当然,使用 ES6 扩展运算符会更好:

Math.max(...iterable);

关于javascript - 将 javascript Max 函数包装器转换为指向 Math.Max 的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37472413/

相关文章:

javascript - 使用 PEG.js 的简单解析问题

javascript - 如何确定函数是其方法的对象?

javascript - D3.js 试图实现可排序的 SVG 表

javascript - 有没有办法在 Javascript 中按行号将 CSV 数据存储在数组中?

javascript - Chart.js 插件重叠工具提示

javascript - 如何注入(inject)一个执行函数的按钮?

javascript - 任何数字的正则表达式,不包括特定数字

javascript - 使用 jQuery/javascript,如何正确解析 HTML 表以将要更新的每一行的内容发送到数据库中

javascript - Windows Scripting Host 弹出窗口 - 在其他窗口之上

javascript - Raphael.js 2.0 动画翻译变量不一致? (小白)