请参阅以下最低示例:
const result = (variableA && !variableB) || !variableA;
在这个表达式中,我不能简单地写这个
const result = variableA && !variableB;
因为如果使用
variableA = 0
,结果将有所不同const variableA = 0;
const variableB = undefined;
console.log((variableA && !variableB) || !variableA); // true
console.log(variableA && !variableB); // 0
有什么办法可以简化这个表达式?
最佳答案
你可以用
!(a && b)
或等效于De Morgan's laws
!a || !b
const
f = (a, b) => (a && !b) || !a,
g = (a, b) => !(a && b),
h = (a, b) => !a || !b
console.log(0, 0, f(0, 0), g(0, 0), h(0, 0));
console.log(0, 1, f(0, 1), g(0, 1), h(0, 1));
console.log(1, 0, f(1, 0), g(1, 0), h(1, 0));
console.log(1, 1, f(1, 1), g(1, 1), h(1, 1));
关于javascript - 如何简化JavaScript中的 `(variableA && !variableB) || !variableA`表达式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61522519/