以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!
BFE.devAI解答 - JavaScript 代码题
139. 实现_.partial()
实现思路:
- partial()函数接收任意数量的参数,第一个参数是要调用的函数,其余参数是要应用到该函数的参数。
- 返回一个新的函数,该函数接收任意数量的参数。在调用时,新函数将传递之前传递给
partial()
的参数和新传递的参数。对于placeholder,我们可以将其替换为新函数的参数。 - 可以使用bind()来绑定之前传递给
partial()
的参数,并返回一个新函数。然后在新函数中连接之前传递的参数和新函数的参数。
参考实现如下:
partial.placeholder = Symbol();function partial(fn, ...args) { return function(...newArgs) { const combinedArgs = args.map(arg => arg === partial.placeholder ? newArgs.shift() : arg).concat(newArgs); return fn.apply(this, combinedArgs); }}
测试代码如下:
const func = (...args) => args;// 没有placeholderconst func123 = partial(func, 1, 2, 3);console.log(func123(4)); // [1,2,3,4]// 使用placeholderconst _ = partial.placeholder;const func1_3 = partial(func, 1, _, 3);console.log(func1_3(2, 4)); // [1,2,3,4]