My Octopress Blog

A blogging framework for hackers.

ท่าพิเศษสำหรับ Operator && และ Operator || ใน Javascript (Short-circuit Evaluation)

ท่าพิเศษสำหรับ operator && และ operator || ใน javascript (Short-circuit evaluation)

ปกติแล้วเรามอง && และ   ว่าเป็นตัวดำเนินการทางด้านตรรกะ (logical operator) เอาไว้ตรวจสอบเงื่อนไขก่อนเข้า if/while ว่าจริง หรือ ไม่จริง operator || และ && เป็น Short-circuit operator ภาษา javascript จะ return LastValue ของการประมวลผลมาให้ด้วย

การ Return ค่าของ operator && และ operator || ใน javascript

* operator && จะ return ตัวหลังถ้าตัวแรกเป็นจริง

เช่น

console.log(true && 'Hello Javascript');

โค้ดข้างบนจะแสดงข้อความข้อความ Hello Javascript เพราะ ค่าสุดท้ายของการประมวลผลคือ Hello Javascript

* operator || จะreturn ตัวหลังถ้าตัวแรกเป็น false

เช่น

console.log(false || 'Hello Javascript');

จะได้ Hello Javascript เพราะค่าสุดท้ายของการประมวลผลคือ Hello Javascript เหมือนกัน


##ข้อควรระวัง var a = 0; a++; ++a; console.log(false && ++a); console.log(true || ++a); console.log(a); code ข้างต้นจะไม่ทำ ++a เลย เพราะมี Short-circuit evaluation (ค่าสุดท้ายคือ fasle เพราะว่า false AND กับอะไรก็ได้ false เลยไม่ต้องคำนวณต่อ เนี่ยแหละกระบวนการ Short-circuit)


การนำ operator && และ operator || ไปใช้

operator &&

var name = person && person.getName(); code ข้างบน จะเหมือนกับ

if(person) {
  var name = person.getName();
}
/* ส่วนใหญ่จะใช้กับการตรวจสอบ object ว่ามีจริงไหม แล้วค่อยดึงค่าออกมาใช้ */

operator ||

var name = persons_name || "John Doe"; code ข้างบน จะเหมือนกับ

if(persons_name) {
  var name = persons_name;
} else {
  var name = "John Doe";
}
/* ส่วนใหญ่จะใช้กับการ set ค่า default */

กระบวนการ Short-circuit evaluation มีอยู่ในหลายภาษาซึ่งแต่ละภาษา return ค่าหลังจากประมวลผลต่างกัน

Short circuit operators ในภาษาต่างๆ

Short Circuit-Evaluation

แหล่งข้อมูลอ้างอิง/เพิ่มเติม