- โดยทั่วไปจะใช้ในการแสดงการแสดงออกต่อไปนี้ลงในข้อมูลบูลีน (บูลีน) นั่นคือมันสามารถเป็นจริงหรือเท็จเท่านั้น
ฉันมักจะเห็นตัวอย่างเช่นนี้:
การคัดลอกรหัสมีดังนี้:
var a;
var b = !! a;
A ไม่ได้กำหนดโดยค่าเริ่มต้น ! A เป็นความจริง !! a เป็นเท็จดังนั้นค่าของ B เป็นเท็จไม่ได้ไม่ได้กำหนดหรือค่าอื่น ๆ อีกต่อไปซึ่งส่วนใหญ่ให้ความสะดวกสำหรับการตัดสินที่ตามมา
- โดยทั่วไปจะใช้ในการแสดงการแสดงออกต่อไปนี้ลงในข้อมูลบูลีน (บูลีน) นั่นคือมันสามารถเป็นจริงหรือเท็จเท่านั้น
เนื่องจาก JavaScript เป็นภาษาที่อ่อนแอ (ตัวแปรไม่มีชนิดข้อมูลคงที่) บางครั้งจึงจำเป็นต้องถูกส่งไปยังประเภทที่เกี่ยวข้องเช่น:
a = parseInt ("1234") a = "1234" -0 // แปลงเป็นหมายเลข b = 1234+"// แปลงเป็นสตริง c = someObject.toString () // แปลงวัตถุเป็นสตริงในหมู่พวกเขาการแปลงที่ชัดเจนครั้งแรกและสี่คือการแปลงที่ชัดเจนและ 2 และ 3 เป็นการแปลงโดยนัย
การแปลงบูลีนกฎการประชุม JavaScript คือ
เท็จ, ไม่ได้กำหนด, null, 0, "" เป็นเท็จ
จริง, 1, "somestring", [วัตถุ] เป็นจริง
สำหรับค่าที่แปลงโดยปริยายอื่น ๆ เช่น null และ undefined, The! ผู้ประกอบการจะให้ผลลัพธ์ที่แท้จริงดังนั้นวัตถุประสงค์ของการใช้เครื่องหมายอัศเจรีย์สองเครื่องหมายคือการแปลงค่าเหล่านี้ให้เป็นค่าบูลีน "เทียบเท่า"
ลองมาดูกันอีกครั้ง:
var foo; การแจ้งเตือน (! foo); // undfined, เครื่องหมายอัศเจรีย์ส่งคืนจริง; การแจ้งเตือน (! goo); // ใน null, เครื่องหมายอัศเจรีย์ส่งคืนจริง; var o = {Flag: true}; test var = !! o.flag; // เทียบเท่ากับ var test = o.flag || false; การแจ้งเตือน (ทดสอบ);ตัวอย่างนี้แสดงให้เห็นว่าเมื่อไม่ได้รับการบอกกล่าวและเป็นโมฆะการกลับมาของจุดอัศเจรีย์หนึ่งจุดเป็นจริงและการกลับมาของสองจุดอัศเจรีย์เป็นเท็จดังนั้นการทำงานของสองจุดอัศเจรีย์คือถ้าค่าของตัวแปรถูกตั้งค่าอย่างชัดเจน หากไม่ได้ตั้งค่าผลลัพธ์จะถูกส่งกลับ