เครื่องหมายตกใจหรือชื่ออย่างเป็นทางการว่าอัศเจรีย์ (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) + "<br>";
var var2 = "Uaychai";
resultpanel.innerHTML += "Boolean of var2 : " + Boolean(var2) + "<br>";
var var3 = 5;
resultpanel.innerHTML += "Boolean of var3 : " + Boolean(var3) + "<br>";
var var4 = [5, 6, 7];
resultpanel.innerHTML += "Boolean of var4 : " + Boolean(var4) + "<br>";
var var5 = { "FirstName": "Uaychai", "Age": 25 };
resultpanel.innerHTML += "Boolean of var5 : " + Boolean(var5) + "<br>";
var var6 = {};
resultpanel.innerHTML += "Boolean of var6 : " + Boolean(var6) + "<br>";
var var7 = function () { alert("Yoda"); };
resultpanel.innerHTML += "Boolean of var7 : " + Boolean(var7) + "<br>";
var var8 = 0;
resultpanel.innerHTML += "Boolean of var8 : " + Boolean(var8) + "<br>";
var var9 = null;
resultpanel.innerHTML += "Boolean of var9 : " + Boolean(var9) + "<br>";
var var10 = NaN;
resultpanel.innerHTML += "Boolean of var10 : " + Boolean(var10) + "<br>";
var var11 = undefined;
resultpanel.innerHTML += "Boolean of var11 : " + Boolean(var11) + "<br>";
</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 + "<br>";
var var2 = "Uaychai";
resultpanel.innerHTML += "Boolean of var2 : " + !!var2 + "<br>";
var var3 = 5;
resultpanel.innerHTML += "Boolean of var3 : " + !!var3 + "<br>";
var var4 = [5, 6, 7];
resultpanel.innerHTML += "Boolean of var4 : " + !!var4 + "<br>";
var var5 = { "FirstName": "Uaychai", "Age": 25 };
resultpanel.innerHTML += "Boolean of var5 : " + !!var5 + "<br>";
var var6 = {};
resultpanel.innerHTML += "Boolean of var6 : " + !!var6 + "<br>";
var var7 = function () { alert("Yoda"); };
resultpanel.innerHTML += "Boolean of var7 : " + !!var7 + "<br>";
var var8 = 0;
resultpanel.innerHTML += "Boolean of var8 : " + !!var8 + "<br>";
var var9 = null;
resultpanel.innerHTML += "Boolean of var9 : " + !!var9 + "<br>";
var var10 = NaN;
resultpanel.innerHTML += "Boolean of var10 : " + !!var10 + "<br>";
var var11 = undefined;
resultpanel.innerHTML += "Boolean of var11 : " + !!var11 + "<br>";
</script>
</body>
</html>