如何将含Spread Syntax的JavaScript代码转换为无扩展运算符形式?
替换扩展运算符的实现方案
当然可以转换,这里用arguments对象和Function.prototype.apply方法就能替代原代码里扩展运算符的功能,改写后的代码如下:
const opposite = function (f) { return function () { return !f.apply(null, arguments); }; };
关键替换说明:
- 原代码里的
(...args)参数收集逻辑,直接用普通函数的arguments对象替代——arguments会自动收集函数调用时传入的所有参数,是一个类数组对象。 - 原代码里的
f(...args)参数展开调用逻辑,换成f.apply(null, arguments)——apply方法的第二个参数接受类数组对象,会把它的元素作为独立参数传给目标函数f,效果和扩展运算符完全一致。
内容的提问来源于stack exchange,提问作者Olivier Sin Fai Lam
相关产品推荐
相关产品推荐

