Javacript ใช้การประเมินผลการลัดวงจรสำหรับผู้ประกอบการเชิงตรรกะและ|| อย่างไรก็ตามมันแตกต่างจากภาษาอื่น ๆ โดยที่มันจะส่งคืนผลลัพธ์ของค่าสุดท้ายที่หยุดการดำเนินการแทนค่าหรือค่า&&truefalse
ค่าต่อไปนี้ถือว่าเป็นเท็จใน JavaScript
- เท็จ
- โมฆะ
"" (สตริงว่าง)
- 0
- น่าน
- ไม่ได้กำหนด
การเพิกเฉยต่อกฎสำคัญของโอเปอเรเตอร์และทำให้สิ่งต่าง ๆ เรียบง่ายตัวอย่างต่อไปนี้แสดงค่าที่หยุดการประเมินและได้รับผลลัพธ์
false || null || "" || 0 || NaN || "Hello" || undefined // "Hello"
ค่า 5 อันดับแรกเกินNaNจริงดังนั้นค่าทั้งหมดจะถูกประเมินจากซ้ายไปขวาจนกระทั่งตรงตามค่าจริงแรก"Hello"ซึ่งทำให้การแสดงออกทั้งหมดเป็นจริงดังนั้นสิ่งใดที่เกินจะไม่ถูกประเมินและ"Hello"ได้รับผลตอบแทนจากการแสดงออก . ในทำนองเดียวกันในกรณีนี้:
1 && [] && {} && true && "World" && null && 2010 // null
5 ค่าแรกนั้นเป็นความจริงทั้งหมดและได้รับการประเมินจนกว่าจะตรงตามค่า falsy แรก ( null) ซึ่งทำให้นิพจน์เป็นเท็จดังนั้น2010จะไม่ถูกประเมินอีกต่อไปและnullได้รับผลตอบแทนจากการแสดงออก
ตัวอย่างที่คุณได้รับคือการใช้คุณสมบัตินี้ของ JavaScript เพื่อดำเนินการมอบหมาย มันสามารถใช้งานได้ทุกที่ที่คุณต้องได้รับความจริงหรือเป็นเท็จค่าแรกในชุดของค่า รหัสด้านล่างนี้จะกำหนดค่า"Hello"ให้bเนื่องจากทำให้ง่ายต่อการกำหนดค่าเริ่มต้นแทนที่จะทำการตรวจสอบถ้าอื่น
var a = false;
var b = a || "Hello";
คุณสามารถเรียกตัวอย่างด้านล่างนี้เป็นการใช้ประโยชน์จากคุณลักษณะนี้และฉันเชื่อว่ามันทำให้โค้ดอ่านยากขึ้น
var messages = 0;
var newMessagesText = "You have " + messages + " messages.";
var noNewMessagesText = "Sorry, you have no new messages.";
alert((messages && newMessagesText) || noNewMessagesText);
ภายในการแจ้งเตือนเราตรวจสอบว่าmessagesเป็น falsy และถ้าใช่แล้วประเมินและผลตอบแทนอย่างอื่นในการประเมินและผลตอบแทนnoNewMessagesText newMessagesTextเนื่องจากเป็น falsy ในตัวอย่างนี้เราหยุดที่ noNewMessagesText "Sorry, you have no new messages."และการแจ้งเตือน
$f=$a or $f=$b or $f=$c; // etcมีการสร้างคุณสามารถใช้: PHP มีทั้ง||โอเปอเรเตอร์และorโอเปอเรเตอร์ซึ่งทำงานเหมือนกัน อย่างไรก็ตามorจะมีการประเมินหลังการมอบหมายในขณะที่||ประเมินก่อน สิ่งนี้ยังทำให้คุณมีสไตล์ที่ไม่เหมือนใครของ$a=getSomething() or die('oops');