How to toggle a boolean?

JavascriptBooleanToggle

Javascript Problem Overview


Is there a really easy way to toggle a boolean value in javascript?

So far, the best I've got outside of writing a custom function is the ternary:

bool = bool ? false : true;

Javascript Solutions


Solution 1 - Javascript

bool = !bool;

This holds true in most languages.

Solution 2 - Javascript

If you don't mind the boolean being converted to a number (that is either 0 or 1), you can use the Bitwise XOR Assignment Operator. Like so:

bool ^= true;   //- toggle value.


This is especially good if you use long, descriptive boolean names, EG:

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)

This is easier for me to scan than repeating the variable in each line.

This method works in all (major) browsers (and most programming languages).

Solution 3 - Javascript

bool = bool != true;

One of the cases.

Solution 4 - Javascript

Let's see this in action:

var b = true;

console.log(b); // true

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

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

Anyways, there is no shorter way than what you currently have.

Solution 5 - Javascript

I was searching after a toggling method that does the same, but which "toggles" an initial value of null or undefined to false.

Here it is:

booly = !(booly != false)

Solution 6 - Javascript

bool === tool ? bool : tool

if you want the value to hold true if tool (another boolean) has the same value

Solution 7 - Javascript

In a case where you may be storing true / false as strings, such as in localStorage where the protocol flipped to multi object storage in 2009 & then flipped back to string only in 2011 - you can use JSON.parse to interpret to boolean on the fly:

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

Solution 8 - Javascript

I always liked Boolean value, but nowadays I'm using binary for both convenience and debugging. You can use de consept !key : ++key: --key to toggle, and if you are in any asynchronous function or anytime an error or false true occurs, the value will leak out of 0(zero)/ 1(one) and you can trigger an alert to debug later.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionChris DutrowView Question on Stackoverflow
Solution 1 - JavascriptJordanView Answer on Stackoverflow
Solution 2 - JavascriptBrock AdamsView Answer on Stackoverflow
Solution 3 - JavascriptFeecoView Answer on Stackoverflow
Solution 4 - JavascriptxameeramirView Answer on Stackoverflow
Solution 5 - JavascriptOfirDView Answer on Stackoverflow
Solution 6 - JavascriptArdhiView Answer on Stackoverflow
Solution 7 - JavascriptGrantView Answer on Stackoverflow
Solution 8 - JavascriptRafael LucasView Answer on Stackoverflow