参数倒置
参数倒置(flip)指的是改变函数前两个参数的顺序。
var divide = (a, b) => a / b;
var flip = f.flip(divide);
flip(10, 5) // 0.5
flip(1, 10) // 10
var three = (a, b, c) => [a, b, c];
var flip = f.flip(three);
flip(1, 2, 3); // => [2, 1, 3]
上面代码中,如果按照正常的参数顺序,10 除以 5 等于 2。但是,参数倒置以后得到的新函数,结果就是 5 除以 10,结果得到 0.5。如果原函数有 3 个参数,则只颠倒前两个参数的位置。
参数倒置的代码非常简单。
let f = {};
f.flip =
fn =>
(a, b, ...args) => fn(b, a, ...args.reverse());