เครื่องหมายตกใจหรือชื่ออย่างเป็นทางการว่าอัศเจรีย์ (Exclamation Mark) ถูกใช้ในภาษาโปรแกรมมิ่งหลายภาษา เพื่อบอกถึงนิเสธ เพื่อเปลี่ยนค่าลอจิก จาก true เป็น false หรือ จาก false เป็น true
ในอินเตอร์เน็ต ตัวอย่างโค้ดจาวาสคริปต์หลายครั้งจะมีการใส่อัศเจรีย์สองครั้งกับตัวแปร ความหมายของมันก็คือการตรวจสอบว่าตัวแปรนั้นมีข้อมูลอยู่หรือไม่
หลักการทำงานของมันคือการแปลงข้อมูลภายในตัวแปรให้กลายเป็นบูลีน โดยผลของการแปลงตัวแปรที่มีข้อมูลหลากหลาย ได้ผลข้างล่าง
Var1 | Boolean(Var1) |
---|---|
false | |
“Uaychai” | true |
5 | true |
[5,6,7] | true |
{ “FirstName”: “Uaychai”, “Age”: 25 }; | true |
{} | true |
function () { alert(“Yoda”); }; | true |
0 | false |
null | false |
NaN | false |
undefined | false |
สังเกตว่าข้อมูลของตัวแปร Var ที่ได้ผลการแปลงข้อมูลบูลีนที่เป็น true ถือเป็นข้อมูลที่ใช้งานได้ นอกนั้นจะเป็น false ด้วยผลการแปลงนี้เองที่ทำให้โปรแกรมเมอร์ใช้วิธีนี้ในการทดสอบตัวแปรว่ามีข้อมูลอยู่หรือไม่
การใช้ฟังก์ชัน Boolean สามารถแปลงตัวแปรใดๆให้กลายเป็นบูลีนได้ แต่ยังมีอีกวิธีและเขียนโค้ดสั้นกว่า นั้นก็คือการใช้อัศเจรีย์ แต่ปัญหาการใช้อัศเจรีย์ก็คือความเป็นนิเสธ ซึ่งทำให้ผลการแปลงข้อมูลตรงกันข้ามกับผลลัพธ์ที่ได้จากตารางข้างบน ด้วยเหตุนี้จึงต้องใชอัศเจรีย์อีกตัวหนึ่งเพื่อกลับข้อมูลให้เหมือนกับผลการแปลงบูลีนดั้งเดิม ผลที่ได้เป็นไปตามตารางนี้
Var1 | Boolean(Var1) | !Var1 | !!Var1 |
---|---|---|---|
false | true | false | |
“Uaychai” | true | false | true |
5 | true | false | true |
[5,6,7] | true | false | true |
{ “FirstName”: “Uaychai”, “Age”: 25 }; | true | false | true |
{} | true | false | true |
function () { alert(“Yoda”); }; | true | false | true |
0 | false | true | false |
null | false | true | false |
NaN | false | true | false |
undefined | false | true | false |
ผู้ใช้สามารถทดสอบได้การทำงานได้ผ่านโค้ดเหล่านี้
ใช้ฟังก์ชัน Boolean
<!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8" /> </head> <body> <div id="resultpanel"> </div> <script type="text/javascript"> var var1; resultpanel.innerHTML = "Boolean of var1 : " + Boolean(var1) + " "; var var2 = "Uaychai"; resultpanel.innerHTML += "Boolean of var2 : " + Boolean(var2) + " "; var var3 = 5; resultpanel.innerHTML += "Boolean of var3 : " + Boolean(var3) + " "; var var4 = [5, 6, 7]; resultpanel.innerHTML += "Boolean of var4 : " + Boolean(var4) + " "; var var5 = { "FirstName": "Uaychai", "Age": 25 }; resultpanel.innerHTML += "Boolean of var5 : " + Boolean(var5) + " "; var var6 = {}; resultpanel.innerHTML += "Boolean of var6 : " + Boolean(var6) + " "; var var7 = function () { alert("Yoda"); }; resultpanel.innerHTML += "Boolean of var7 : " + Boolean(var7) + " "; var var8 = 0; resultpanel.innerHTML += "Boolean of var8 : " + Boolean(var8) + " "; var var9 = null; resultpanel.innerHTML += "Boolean of var9 : " + Boolean(var9) + " "; var var10 = NaN; resultpanel.innerHTML += "Boolean of var10 : " + Boolean(var10) + " "; var var11 = undefined; resultpanel.innerHTML += "Boolean of var11 : " + Boolean(var11) + " "; </script> </body> </html>
ใช้อัศเจรีย์สองตัว
<!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8" /> </head> <body> <div id="resultpanel"> </div> <script type="text/javascript"> var var1; resultpanel.innerHTML = "Boolean of var1 : " + !!var1 + " "; var var2 = "Uaychai"; resultpanel.innerHTML += "Boolean of var2 : " + !!var2 + " "; var var3 = 5; resultpanel.innerHTML += "Boolean of var3 : " + !!var3 + " "; var var4 = [5, 6, 7]; resultpanel.innerHTML += "Boolean of var4 : " + !!var4 + " "; var var5 = { "FirstName": "Uaychai", "Age": 25 }; resultpanel.innerHTML += "Boolean of var5 : " + !!var5 + " "; var var6 = {}; resultpanel.innerHTML += "Boolean of var6 : " + !!var6 + " "; var var7 = function () { alert("Yoda"); }; resultpanel.innerHTML += "Boolean of var7 : " + !!var7 + " "; var var8 = 0; resultpanel.innerHTML += "Boolean of var8 : " + !!var8 + " "; var var9 = null; resultpanel.innerHTML += "Boolean of var9 : " + !!var9 + " "; var var10 = NaN; resultpanel.innerHTML += "Boolean of var10 : " + !!var10 + " "; var var11 = undefined; resultpanel.innerHTML += "Boolean of var11 : " + !!var11 + " "; </script> </body> </html>