【发布时间】:2017-07-01 00:18:17
【问题描述】:
我需要简化这个表达式
var foo = (!A && B && C) || (A && B && !C) ;
谁能建议使用最少运算符的良好简化?
【问题讨论】:
标签: javascript boolean boolean-logic boolean-expression
我需要简化这个表达式
var foo = (!A && B && C) || (A && B && !C) ;
谁能建议使用最少运算符的良好简化?
【问题讨论】:
标签: javascript boolean boolean-logic boolean-expression
【讨论】:
由于(!A && C) || (A && !C)是XOR的扩展,你可以用XOR表达式替换那部分:
var foo = B && (!!A ^ !!C);
【讨论】:
!!没有意义,应该去掉。
!!4 ^ !!8 是 0(虚假),但 4 ^ 8 是 12(真实)。 !!"nonempty" ^ !!"" 是 1(真实),但 "nonempty" ^ "" 是 0(虚假)。