如何切换布尔值?

Chr*_*row 378 javascript boolean toggle

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

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

bool = bool ? false : true;
Run Code Online (Sandbox Code Playgroud)

Jor*_*dan 855

bool = !bool;
Run Code Online (Sandbox Code Playgroud)

这在大多数语言中都适用.

  • 非常好的解决方案,我正在使用:test =(test == true)?false:是的; (8认同)
  • @ user2846569,如果你要切换布尔值,这意味着本质上变量已经被初始化了.你可以把它扩展为`bool =!bool || 是的,我认为`有默认值. (8认同)
  • @Jordan导致ReferenceError (2认同)

Bro*_*ams 82

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

bool ^= true;   //- toggle value.
Run Code Online (Sandbox Code Playgroud)


如果你使用长的描述性布尔名称E​​G,这是特别好的:

var inDynamicEditMode   = true;     // Value is: true (boolean)
inDynamicEditMode      ^= true;     // Value is: 0 (number)
inDynamicEditMode      ^= true;     // Value is: 1 (number)
inDynamicEditMode      ^= true;     // Value is: 0 (number)
Run Code Online (Sandbox Code Playgroud)

这比我在每行中重复变量更容易扫描.

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

  • 当值被转换为数字时,你将无法再执行`bool === false`或`bool === true`.它可能会破坏现有代码,所以要小心. (39认同)
  • 因为无论如何它都会重新整数,它可以简化为:`bool ^ = 1` (10认同)
  • 这使得长变量非常棒,对此而言. (3认同)

Fee*_*eco 10

bool = bool != true;
Run Code Online (Sandbox Code Playgroud)

其中一个案例.


xam*_*mir 10

让我们看看这个:

var b = true;

console.log(b); // true

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

b = !b;
console.log(b); // true
Run Code Online (Sandbox Code Playgroud)

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


Hey*_*ude 5

我正在寻找一种具有相同功能的切换方法,但它将nullor的初始值“切换”undefinedfalse

这里是:

booly = !(booly != false)
Run Code Online (Sandbox Code Playgroud)