Вы можете использовать !(a ^ b)
или !a === !b
:
test(true, true);
test(false, false);
test(true, false);
test(false, 1); // 1 = truthy value
test(false, ""); // "" = falsy value
function test(a, b) {
console.log(`!(${JSON.stringify(a)} ^ ${JSON.stringify(b)}) => ${!(a ^ b)}`);
console.log(`!${JSON.stringify(a)} === !${JSON.stringify(b)} => ${!a === !b}`);
}
.as-console-wrapper {
max-height: 100% !important;
}
^
является оператором исключающего или (XOR). Он преобразует свои операнды в числа (true
=> 1
, false
=> 0
) и выполняет XOR для них.
!a === !b
работает, потому что любой !
преобразует любую правду значение false
и любое ложное значение true
, а затем вы можете напрямую сравнить их.