1.
const T = A ? val1 : (B && C) || D ? val2 : default ;
类似于这种条件判断 超过两层或者比较复杂的话 就不用三目运算了,不好维护,使用Map+get
const T = new Map([
[true, default],
[(B && C) || D, val2],
[A, val1],
]).get(true);
// 转换为Map+get(true)后 会取最后一个为true的值,因此写在前面的权重反而低
此时书写就由左强右弱 变成上弱下强,改写时从原表达式的右向左依次填入Map中
2.
- 大前提D为真时,T才可能为真
- A为真时,T为真;A为假时,T
- 但B与A同时为真时,T为假
- 不管AB,C条件为真时,T为真
T = D && ( !(A && B) || C )
T = D && ( (A && !B) || C ) 应该是这个才对