执行边界
执行边界(until)指的是函数执行到满足条件为止。
let condition = x => x > 100;
let inc = x => x + 1;
let until = f.until(condition, inc);
until(0) // 101
condition = x => x === 5;
until = f.until(condition, inc);
until(3) // 5
上面代码中,第一段的条件是执行到x
大于 100 为止,所以x
初值为 0 时,会一直执行到 101。第二段的条件是执行到等于 5 为止,所以x
最后的值是 5。
执行边界的实现如下。
let f = {};
f.until = (condition, f) =>
(...args) => {
var r = f.apply(null, args);
return condition(r) ? r : f.until(condition, f)(r);
};
上面代码的关键就是,如果满足条件就返回结果,否则不断递归执行。