either 方法
功能:检查给定的一组参数是否至少有一个函数返回true
。
有点绕,解释一下,假设我们有两个变量 a
和 b
,值都为 boolean。
我们想要的结果是a
和b
只要有一个变量为 true
,就返回 true
。
我们一般就这么写:
const result = a || b
今天的联系也是类似的,只是我们换成了两个函数的求值结果。如下所示:
const either = (f, g) => (...args) => f(...args) || g(...args);
说明:either
方法结果两个参数,这两个参数都是函数,结果是返回一个函数,这个函数接收一个参数,该函数的结果是我们 所传入两个函数的或值。
示例
// 是否是偶数
const isEven = num => num % 2 === 0;
// 是否是正数
const isPositive = nu => num > 0;
// 是否是正数或者偶数
const isPositiveOrEven = either(isPositive, isEven);
isPositiveOrEven(4); // true
isPositiveOrEven(3); // true
isPositiveOrEven(-2); // true
isPositiveOrEven(-1); // false
解释一下:
isPositiveOrEven 的使用是判断所传入的参数,如果是偶数或者正数,则返回true
。
因为 4
是正数且是偶数,所以 isPositiveOrEven(4)
的结果为 true
。
3
是奇数,但是偶数,所以 isPositiveOrEven(3)
的结果为 true
。
-2
不是正数,但是偶数,所以 isPositiveOrEven(-2)
的结果为 true
。
-1
即不是正数也不是偶数,所以 isPositiveOrEven(-1)
的结果为 false
。