มีวิธีง่าย ๆ ในการสลับค่าบูลีนใน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หรือที่ที่มันควรจะเป็นundefinedfalse
นี่มันคือ:
booly = !(booly != false)