JavaScript 中是否有 XNOR 运算符?

9

我刚接触JavaScript,想知道JS中是否有XNOR运算符。我尝试了!(a^b),但结果很奇怪。例如:

var a,b="aa"; 
a^b

这段代码返回true,但是我XNOR返回false。
更新
如果两个操作数都为true(与false值不同),或者两个操作数都为false(都等于:null、undefined、""-空字符串-或0),则需要返回true。


5
这句话的意思是“这不就相当于==吗?” - James Thorpe
1
你考虑过在链中使用异或(xor)和非(not)吗?另外,这个var a,b="aa"; a^b是什么意思?它看起来完全错误,根本不能得到true。 - ASDFGerte
在C#中是否有XNOR逻辑双条件运算符? - 我不确定是否应该将其关闭为重复问题(这也是我取消了我的重复投票的原因),因为它涉及到不同的编程语言。 - James Thorpe
你为什么要使用位运算符比较字符串和未定义的值呢?! - Bergi
4个回答

26

XNOR truth table

上图是XNOR的真值表。如果A和B都为FALSE或TRUE,则结果为TRUE。因此,对于我来说,似乎仅检查相等实际上等同于XNOR。

所以:

(a === b) = (a XNOR b)

编辑:为了与您的条件正常工作,应该这样做:

a == b
请确认有两个等号(“=”,而非三个),这表明正在比较“truthy”值。

@aName 然后如果您需要将值转换为适当的布尔值,请使用 !a === !b - Bergi
我已经更新了我的答案,请尝试这个:a == b(请注意只有两个等号,而不是三个)。 - Brandon Dixon
that's it @Bergi - aName

17

按位非或是:

~(a ^ b)

而且是合乎逻辑的;

a === b

0
尝试 (a^b)==0 我认为在 JavaScript 中 XNOR 的结果是:true^true = 0

-1

尝试这个(!(A ^ B)) 或者这个(A && B) || (!A && !B)


1
按位非是 ~ - ASDFGerte
是的,那是我现在正在使用的,但我想知道是否有一个操作符可以使它更简单。 - aName

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接