Переключение логического значения в javascript

есть ли действительно простой способ переключить логическое значение в в JavaScript?

до сих пор лучшее, что у меня есть за пределами написания пользовательской функции, - это тернарное:

bool = bool ? false : true;

6 ответов


bool = !bool;

Это справедливо для большинства языков.


Если вы не против преобразования логического значения в число (то есть 0 или 1), Вы можете использовать побитовый оператор присваивания XOR. Вот так:

bool ^= true;   //- toggle value.


Это особенно хорошо, если вы используете длинные, описательные логические имена, например:

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)

мне легче сканировать, чем повторять переменную в каждой строке.

этот метод работает во всех (основных) браузерах (и в большинстве языков программирования).


bool = bool != true;

один из случаев.


давайте посмотрим это в действии:

var b = true;

console.log(b); // true

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

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

В общем, нет более короткого пути, чем тот, который у вас есть в настоящее время.


bool === tool ? bool : tool

Если вы хотите, чтобы значение имело значение true, если tool (другое логическое значение) имеет то же значение


Я искал метод переключения, который делает то же самое, за исключением начального значения null или undefined, где он должен стать false.

вот это:

booly = !(booly != false)