부울을 토글하는 방법?


412

자바 스크립트 에서 부울 값을 토글하는 쉬운 방법이 있습니까?

지금까지 사용자 정의 함수를 작성하는 것 이외의 가장 좋은 것은 삼항입니다.

bool = bool ? false : true;

답변:


926
bool = !bool;

대부분의 언어에서 마찬가지입니다.


8
정말 좋은 해결책, 나는 사용하고 있었다 : test = (test == true)? 거짓 : 참;
alpera

1
이것은 초기화가 필요하므로 초기화하지 않는 방법이 있습니다. 이것은 객체 속성에서 작동하지만.
user2846569 2014 년

10
@ user2846569, 부울을 토글하는 경우 변수가 이미 초기화되었음을 의미합니다. bool = !bool || true;기본값을 갖도록 확장 할 수 있다고 생각합니다.
Jordan

3
@Jordan 그 원인 ReferenceError
user2846569

1
JB는 이진 명령문보다는 단항 명령문을 원합니다. 아마 그것은 바보 일 수 있었다!! 또는 !! bool. 그러나 지금까지 나는 그런 구문을 본 적이 없다. 나는 요르단에 동의합니다. 이미 너무 짧습니다.
Fandi Susanto

95

부울이 숫자 (0 또는 1)로 변환되는 것을 신경 쓰지 않으면 Bitwise XOR Assignment Operator를 사용할 수 있습니다 . 이렇게 :

bool ^= true;   //- toggle value.


길고 설명적인 부울 이름 인 EG를 사용하는 경우에 특히 좋습니다.

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

12
bool = bool != true;

사례 중 하나입니다.



2
bool === tool ? bool : tool

tool(다른 부울)의 값이 동일한 경우 값을 true로 유지 하려면


2

null또는 의 초기 값을 제외하고는 동일한 토글 링 방법을 찾은 후 검색 undefined해야했습니다 false.

여기있어:

booly = !(booly != false)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.