Làm thế nào để chuyển đổi một boolean?


412

Có cách nào thực sự dễ dàng để chuyển đổi giá trị boolean trong javascript không?

Cho đến nay, điều tốt nhất tôi có được ngoài việc viết một chức năng tùy chỉnh là ternary:

bool = bool ? false : true;

Câu trả lời:


926
bool = !bool;

Điều này đúng trong hầu hết các ngôn ngữ.


8
giải pháp thực sự tốt, tôi đã sử dụng: test = (test == true)? sai đúng;
alpera

1
Điều này cần khởi tạo, vì vậy có một cách mà không cần khởi tạo. Mặc dù điều này sẽ làm việc trên các thuộc tính đối tượng.
dùng2846569

10
@ user2846569, nếu bạn đang bật boolean, điều đó có nghĩa là về bản chất, biến đã được khởi tạo. Bạn có thể mở rộng nó để bool = !bool || true;có một mặc định, tôi cho rằng.
Jordan

3
@Jordan Điều đó gây ra ReferenceError
user2846569

1
JB muốn một tuyên bố đơn nhất hơn là tuyên bố nhị phân. Có lẽ nó có thể là bool !! hoặc !! bool. Nhưng cho đến nay tôi chưa bao giờ thấy cú pháp như vậy. Tôi đồng ý với Jordan. Nó quá ngắn rồi.
Fandi Susanto

95

Nếu bạn không quan tâm đến việc boolean được chuyển đổi thành một số (đó là 0 hoặc 1), bạn có thể sử dụng Toán tử gán gán Bitwise XOR . Thích như vậy:

bool ^= true;   //- toggle value.


Điều này đặc biệt tốt nếu bạn sử dụng tên boolean mô tả dài, 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)

Điều này đối với tôi dễ quét hơn là lặp lại biến trong mỗi dòng.

Phương pháp này hoạt động trong tất cả các trình duyệt (chính) (và hầu hết các ngôn ngữ lập trình).


15
Vì dù sao nó cũng tái phát thành một số nguyên, nên nó có thể được đơn giản hóa như sau:bool ^= 1
Kyle Mueller

47
Khi giá trị được đúc với một số, bạn sẽ không thể làm được bool === falsehay bool === truenữa. Nó có thể phá vỡ mã hiện có, vì vậy hãy cẩn thận.
aymericbeaumet

12
bool = bool != true;

Một trong những trường hợp.



2
bool === tool ? bool : tool

nếu bạn muốn giá trị giữ đúng nếu tool(boolean khác) có cùng giá trị


2

Tôi đã tìm kiếm sau khi một phương pháp chuyển đổi tương tự, ngoại trừ giá trị ban đầu của nullhoặc undefined, nơi nó sẽ trở thành false.

Đây là:

booly = !(booly != false)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.