Javascript 使用布尔值的内联NOT运算符

Javascript 使用布尔值的内联NOT运算符,javascript,boolean-operations,Javascript,Boolean Operations,我有一段代码: if (bool) { return <code that outputs bool>; } else { return !<same code that outputs bool>; } 找到了 return bool === <code> 我写下了一张真相表,看到了这个 code T F +-+- T|T|F bool +-+- F|F|T 与bool=cod

我有一段代码:

if (bool) {
    return <code that outputs bool>;
} else {
    return !<same code that outputs bool>;
}
找到了

return bool === <code>
我写下了一张真相表,看到了这个

      code
       T F
      +-+-
     T|T|F
bool  +-+-
     F|F|T
与bool=code相同的表找到了它

return bool === <code>
我写下了一张真相表,看到了这个

      code
       T F
      +-+-
     T|T|F
bool  +-+-
     F|F|T

这是与bool=code相同的表,如果不想写两次代码,则将结果提取到变量或函数中

//sample <code that outputs bool>
var result = 
所以你可以简单的做

if (bool) {
  return result
} else {
  return !result
}
这可以简化为

if (!bool) {
  result = !result;
}
return result;

如果您喜欢使用布尔代数来翻转结果,那么可以使用XOR。在JavaScript中,XOR运算符只对整数起作用,因此它将布尔值转换为
0
1
,但您可以直接将它们隐式地再次转换为布尔值
!!值
或显式
布尔值(值)

以下是XOR方程的工作原理
valueToFlip XOR bool
将反转
bool=true
valueToFlip
为任意值的结果。如果只想打开
bool=false
,则只需在“valueToFlip XOR NOT bool:

函数描述flip(valueToFlip,bool){
常量结果=布尔值(valueToFlip^!bool);
log(`${valueToFlip}${bool}:${result}`)
}
描述错误(真,真);
描述错误(假、真);
描述错误(真、假);

描述错误(假,假)如果不想编写两次代码,则将结果提取到变量或函数中

//sample <code that outputs bool>
var result = 
所以你可以简单的做

if (bool) {
  return result
} else {
  return !result
}
这可以简化为

if (!bool) {
  result = !result;
}
return result;

如果您喜欢使用布尔代数来翻转结果,那么可以使用XOR。在JavaScript中,XOR运算符只对整数起作用,因此它将布尔值转换为
0
1
,但您可以直接将它们隐式地再次转换为布尔值
!!值
或显式
布尔值(值)

以下是XOR方程的工作原理
valueToFlip XOR bool
将反转
bool=true
valueToFlip
为任意值的结果。如果只想打开
bool=false
,则只需在“valueToFlip XOR NOT bool:

函数描述flip(valueToFlip,bool){
常量结果=布尔值(valueToFlip^!bool);
log(`${valueToFlip}${bool}:${result}`)
}
描述错误(真,真);
描述错误(假、真);
描述错误(真、假);


描述错误(假,假)
返回(bool?:!)
@Kevin.a
很长,可以在一行中复制。我的主要目的是不必写两次
。@bxk21然后将结果提取到一个变量中?MHO:我的常识是,如果需要这样做,它似乎是错误的模式。@VLAZ我希望可以避免这种情况。我想不是。谢谢。
return(bool?:!)
@Kevin.a
很长,可以在一行中复制。我的主要目的是不必写两次
。@bxk21然后将结果提取到一个变量中?MHO:我的常识是,如果需要这样做,它似乎是错误的模式。@VLAZ我希望可以避免这种情况。我想不是。谢谢。我最终得到了
bool-codethattoutputsbool()==0
,这将简化为您在这里得到的内容。不错。@TylerRoper是的,我刚看到你的答案,然后你就把它删除了。看起来我们的想法基本上是一样的。我最终得到了
bool-codethautputsbool()==0
,这就简化了这里的内容。不错。@TylerRoper是的,我刚看到你的答案,然后你就把它删除了。看起来我们的想法基本上是一样的。很有趣。插入符号运算符显然是XOR的按位运算符。我想它不会对原始布尔值做任何奇怪的事情。@bxk21嗯,正如我所说,它会将它们转换成数字,但是
true->1
false=0
。虽然直接转换为布尔值可恢复值,但等式同时适用于两种情况:
!!1=真
!!0=假
。所以,只要你转换最终结果,你就会得到与布尔异或相同的结果。如果布尔值为false,我希望valueToFlip翻转,而不是true。所以我们想要一个非异或,对吗?@bxk21是的,你可以在把它输入公式之前反转
bool
。我已经修改了这个例子,很有趣。插入符号运算符显然是XOR的按位运算符。我想它不会对原始布尔值做任何奇怪的事情。@bxk21嗯,正如我所说,它会将它们转换成数字,但是
true->1
false=0
。虽然直接转换为布尔值可恢复值,但等式同时适用于两种情况:
!!1=真
!!0=假
。所以,只要你转换最终结果,你就会得到与布尔异或相同的结果。如果布尔值为false,我希望valueToFlip翻转,而不是true。所以我们想要一个非异或,对吗?@bxk21是的,你可以在把它输入公式之前反转
bool
。我已经把这个例子修改成那样了。