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
。我已经把这个例子修改成那样了。