gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 13:16:29 25 4
gpt4 key购买 nike

我参加了一次工作面试,他们要求我在白板上用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com