执行边界

执行边界(until)指的是函数执行到满足条件为止。

  1. let condition = x => x > 100;
  2. let inc = x => x + 1;
  3. let until = f.until(condition, inc);
  4. until(0) // 101
  5. condition = x => x === 5;
  6. until = f.until(condition, inc);
  7. until(3) // 5

上面代码中,第一段的条件是执行到x大于 100 为止,所以x初值为 0 时,会一直执行到 101。第二段的条件是执行到等于 5 为止,所以x最后的值是 5。

执行边界的实现如下。

  1. let f = {};
  2. f.until = (condition, f) =>
  3. (...args) => {
  4. var r = f.apply(null, args);
  5. return condition(r) ? r : f.until(condition, f)(r);
  6. };

上面代码的关键就是,如果满足条件就返回结果,否则不断递归执行。