มีวิธีง่าย ๆ ในการสลับค่าบูลีนในjavascriptหรือไม่?
จนถึงตอนนี้สิ่งที่ดีที่สุดที่ฉันมีนอกเหนือจากการเขียนฟังก์ชันแบบกำหนดเองคือ ternary:
bool = bool ? false : true;
มีวิธีง่าย ๆ ในการสลับค่าบูลีนในjavascriptหรือไม่?
จนถึงตอนนี้สิ่งที่ดีที่สุดที่ฉันมีนอกเหนือจากการเขียนฟังก์ชันแบบกำหนดเองคือ ternary:
bool = bool ? false : true;
คำตอบ:
bool = !bool;
สิ่งนี้ถือเป็นจริงในเกือบทุกภาษา
bool = !bool || true;
ให้เป็นค่าเริ่มต้นฉันคิดว่า
หากคุณไม่ทราบความเป็นอยู่แบบบูลแปลงเป็นตัวเลข (นั่นคือ 0 หรือ 1) คุณสามารถใช้การกำหนดผู้ประกอบการ Bitwise แฮคเกอร์ ชอบมาก
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)
การสแกนแบบนี้ง่ายกว่าการทำซ้ำตัวแปรในแต่ละบรรทัด
วิธีนี้ใช้ได้กับเบราว์เซอร์ (หลัก) ทั้งหมด (และภาษาการเขียนโปรแกรมส่วนใหญ่)
bool ^= 1
bool === false
หรือbool === true
อีกต่อไป มันอาจทำลายรหัสที่มีอยู่ดังนั้นโปรดระวัง
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
ถ้าคุณต้องการให้ค่าถือจริงถ้าtool
(บูลีนอื่น) มีค่าเดียวกัน
ฉันถูกค้นหาหลังจากวิธีการสลับที่ไม่เหมือนกันยกเว้นค่า inital ของnull
หรือที่ที่มันควรจะเป็นundefined
false
นี่มันคือ:
booly = !(booly != false)