如何切换布尔值?

问题描述 投票:0回答:10

有没有一种非常简单的方法可以在 javascript 中切换布尔值?

到目前为止,除了编写自定义函数之外,我得到的最好的就是三元:

bool = bool ? false : true;
javascript boolean toggle
10个回答
1245
投票
bool = !bool;

这在大多数语言中都是如此。


124
投票

如果您不介意将布尔值转换为数字(即 0 或 1),则可以使用 按位异或赋值运算符。像这样:

bool ^= true;   //- toggle value.

如果您使用长的、描述性的布尔名称,这尤其有用,例如:
let inDynamicEditMode   = true;     // Value is: true (boolean)
inDynamicEditMode      ^= true;     // Value is: 0 (number)
inDynamicEditMode      ^= true;     // Value is: 1 (number)
inDynamicEditMode      ^= true;     // Value is: 0 (number)

这对我来说比在每行中重复变量更容易扫描。

此方法适用于所有(主要)浏览器(以及大多数编程语言)。


19
投票

让我们看看实际效果:

var b = true;

console.log(b); // true

b = !b;
console.log(b); // false

b = !b;
console.log(b); // true

无论如何,没有比你现在拥有的更短的方法了。


13
投票
bool = bool != true;

其中一个案例。


5
投票

我正在寻找一种具有相同功能的切换方法,但它将

null
undefined
的初始值“切换”为
false

这是:

booly = !(booly != false)

2
投票

这是一个老问题,但我认为 ES6 更新会很好。

通常我们想要一个可以在不破坏代码的情况下处理所有事情的切换开关。

我们可以使用

null
undefined
值的初始值作为
false

const boolToggler = b => !(b ?? false)

let foo
console.log('foo:', foo) // undefined

foo = boolToggler(foo)
console.log('foo:', foo) // true (assumes undefined as 'false')

foo = boolToggler(foo)
console.log('foo:', foo); // false

let fee = null
console.log('fee:', fee) // null

fee = boolToggler(fee)
console.log('fee:', fee) // true (assumes null as 'false')

let faa = true
console.log('faa:', faa) // true

faa = boolToggler(faa)
console.log('faa:', faa); // false


1
投票
bool === tool ? bool : tool

如果您希望该值在

tool
(另一个布尔值)具有相同的值时保持 true


1
投票

在您可能将 true / false 存储为字符串的情况下,例如在 localStorage 中,协议在 2009 年翻转为多对象存储,然后仅在 2011 年翻转回字符串 - 您可以使用 JSON.parse 来解释为布尔值苍蝇:

this.sidebar = !JSON.parse(this.sidebar);

0
投票

我一直喜欢布尔值,但现在我使用二进制来方便和调试。您可以使用 de consept

 !key : ++key: --key
进行切换,如果您处于任何异步函数中或任何时候发生错误或 false true,该值将泄漏出 0(零)/ 1(一),您可以触发警报稍后调试。


0
投票

对布尔值执行 NOT 运算

bool = !bool;
© www.soinside.com 2019 - 2024. All rights reserved.