Short-circuit Assignment ใช้ Operator && และ || ร่วมกับการกำหนดค่า (Assignment) เพื่อให้ค่า Default หรือเลือกค่าตามเงื่อนไขได้อย่างกระชับ
ตัวอย่างโค้ด
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Short-circuit Assignment</title>
<style>
body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; }
.result, .sample { font-size: 20px; font-weight: 500; color: blueviolet; }
.sample { color: red; }
</style>
</head>
<body>
<h1>Short-circuit Assignment</h1>
<div class="sample">a = 22 || 0 || 0<br>b = 0 && 22 && 22</div>
<div class="result"></div>
<br />
<button class="Btn">คลิกที่นี่</button>
<h3>คลิกปุ่มด้านบนเพื่อดูค่าของตัวแปร a และ b ในสมการข้างต้น</h3>
<script>
const resEle = document.querySelector(".result");
const BtnEle = document.querySelector(".Btn");
BtnEle.addEventListener("click", () => {
let a, b;
a = 22 || 0 || 0; // Truthy แรก = 22
b = 0 && 22 && 22; // Falsy แรก = 0
resEle.innerHTML = "a = " + a + "<br>";
resEle.innerHTML += "b = " + b + "<br>";
});
</script>
</body>
</html>
รูปแบบการใช้งานทั่วไป
// Default Value ด้วย ||
const name = userName || "Guest"; // ถ้า userName falsy ใช้ "Guest"
const config = options || {}; // Default empty object
// Conditional Assignment ด้วย &&
const isAdmin = user && user.role === "admin"; // ป้องกัน error ถ้า user null
const cache = enabled && getCache(); // เรียกฟังก์ชันก็ต่อเมื่อ enabled
// Logical Assignment Operators (ES2021)
a ||= b; // a = a || b (assign ถ้า a falsy)
a &&= b; // a = a && b (assign ถ้า a truthy)
a ??= b; // a = a ?? b (assign ถ้า a null/undefined) - แนะนำมากกว่า ||
⚠️ ข้อควรระวัง
ตัวอย่างในโค้ดมีข้อความว่า "non-zero number evaluates to false" - ข้อนี้ผิด ครับ ใน JavaScript ตัวเลข non-zero ทุกตัวเป็น Truthy (ยกเว้น 0, -0, 0n)
ผลลัพธ์
a = 22 (ค่า Truthy แรก), b = 0 (ค่า Falsy แรก)