499

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

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

bool = bool ? false : true;
4

8 回答 8

1116
bool = !bool;

这适用于大多数语言。

于 2012-07-22T22:11:18.967 回答
112

如果您不介意将布尔值转换为数字(即 0 或 1),则可以使用Bitwise XOR Assignment Operator。像这样:

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)

这比在每一行中重复变量更容易扫描。

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

于 2013-05-28T05:14:19.017 回答
14
bool = bool != true;

案例之一。

于 2016-07-13T11:00:59.327 回答
11

让我们看看它的实际效果:

var b = true;

console.log(b); // true

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

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

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

于 2018-01-29T12:52:44.293 回答
3

null我正在寻找一种切换方法,它做同样的事情,但将or的初始值“切换”undefinedfalse

这里是:

booly = !(booly != false)
于 2018-06-11T13:46:44.303 回答
1
bool === tool ? bool : tool

如果tool(另一个布尔值)具有相同的值,则您希望该值保持为真

于 2017-09-20T11:42:05.503 回答
0

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

this.sidebar = !JSON.parse(this.sidebar);
于 2020-12-26T14:46:43.557 回答
0

我一直喜欢布尔值,但现在我使用二进制来方便和调试。您可以使用 de consept !key : ++key: --key进行切换,如果您在任何异步函数中或任何时候发生错误或 false true,则该值将从 0(零)/ 1(一)泄漏,您可以稍后触发警报进行调试。

于 2021-12-22T15:12:11.947 回答