ブール値を切り替える方法は?


412

JavaScriptでブール値を切り替える本当に簡単な方法はありますか?

これまでのところ、カスタム関数を作成する以外に得た最善の方法は3項です。

bool = bool ? false : true;

回答:


926
bool = !bool;

これはほとんどの言語に当てはまります。


8
本当に良い解決策、私が使っていた:test =(test == true)?真偽;
alpera 2014年

1
これには初期化が必要なので、初期化なしの方法があります。これはオブジェクト属性で機能しますが。
user2846569

10
@ user2846569、ブール値を切り替える場合、つまり、その性質上、変数はすでに初期化されています。bool = !bool || true;デフォルトに拡張することもできると思います。
ジョーダン

3
ReferenceErrorを引き起こす@Jordan
user2846569

1
JBは、バイナリステートメントではなく単項ステートメントを必要としています。多分それはブールかもしれない!! または!! bool。しかし、これまでのところ、そのような構文を見たことはありません。私はヨルダンに同意します。もう短いです。
Fandi Susanto 2014年

95

ブール値が数値(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)

これは、各行で変数を繰り返すよりもスキャンが簡単です。

この方法は、すべての(主要な)ブラウザー(およびほとんどのプログラミング言語)で機能します。


15
これはとにかく整数に再キャストするので、次のように簡略化できます。– bool ^= 1
Kyle Mueller

47
値は数値にキャストされたとして、あなたはそうではないことができるようになりますbool === falseか、bool === trueもう。既存のコードが壊れる可能性があるので注意してください。
aymericbeaumet 2014年



2
bool === tool ? bool : tool

tool(別のブール値)が同じ値の場合に値をtrueに保持する場合


2

私はinitalの値を除いて、同じことをトグル法の後探していたnullか、undefinedそれはなるはず、false

ここにあります:

booly = !(booly != false)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.