ท่าพิเศษสำหรับ 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 ค่าหลังจากประมวลผลต่างกัน