ChatGPT解决这个技术问题 Extra ChatGPT

如何切换布尔值?

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

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

bool = bool ? false : true;

J
Jordan
bool = !bool;

这适用于大多数语言。


非常好的解决方案,我使用的是:test = (test == true)?假:真;
这需要初始化,所以有没有没有初始化的方法。虽然这适用于对象属性。
@ user2846569,如果您要切换布尔值,则意味着该变量本质上已经被初始化。我想您可以将其扩展为 bool = !bool || true; 以获得默认值。
@Jordan 导致 ReferenceError
JB 想要一元语句而不是二元语句。也许它可能是布尔值!或!!布尔。但到目前为止,我从未见过这样的语法。我同意乔丹的观点。已经这么短了。
N
NearHuscarl

如果您不介意将布尔值转换为数字(即 0 或 1),则可以使用 the 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)

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

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


由于这无论如何都会重铸为整数,因此可以简化为:bool ^= 1
由于该值被强制转换为数字,您将无法再执行 bool === falsebool === true。它可能会破坏现有代码,所以要小心。
F
Feeco
bool = bool != true;

案例之一。


x
xameeramir

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

变量 b = 真;控制台.log(b); // 真 b = !b;控制台.log(b); // 假 b = !b;控制台.log(b); // 真的

无论如何,there is no shorter way than what you currently have.


O
OfirD

我正在寻找一种同样的切换方法,但它将nullundefined的初始值“切换”到false

这里是:

booly = !(booly != false)

A
Ardhi
bool === tool ? bool : tool

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


G
Grant

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

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

如果变量具有不同的真/假值,例如“是”/“否”,我使用 sidebar = (sidebar == trueValue) falseValue : trueValue;
R
Rafael Lucas

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