请参阅以下最低示例:

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/

10-10 08:25