1. || (ตรรกะหรือ),
แท้จริงแล้วเท็จจะถูกส่งคืนเมื่อทั้งก่อนและหลังเท็จมิฉะนั้นจะถูกส่งคืน
การแจ้งเตือน (จริง || เท็จ); // truealert (เท็จ || จริง); // TrueAlert (จริง || จริง); // truealert (เท็จ || เท็จ); // เท็จ
คนโง่คนนี้รู้ ~~
อย่างไรก็ตามในแง่ที่ลึกซึ้งยิ่งขึ้นมีอีกโลกหนึ่ง ลองใช้รหัสต่อไปนี้
การแจ้งเตือน (0 || 1); // 1
เห็นได้ชัดว่าเรารู้ว่า 0 ครั้งแรกหมายถึงเท็จและ 1 ที่สองหมายถึงความจริงจากนั้นผลลัพธ์ข้างต้นควรเป็นจริงและความจริงกลับผลลัพธ์คือ 1 ดูที่รหัสต่อไปนี้:
การแจ้งเตือน (2 || 1); // 2
เรารู้ว่า 2 ครั้งแรกเป็นจริงและ 1 สุดท้ายเป็นจริง ผลตอบแทนคืออะไร? ผลการทดสอบคือ 2 อ่านต่อ:
การแจ้งเตือน ('a' || 1); // 'a'ในทำนองเดียวกัน 'A' แรกเป็นความจริงและ 1 ถัดไปเป็นจริง ผลการทดสอบคือ 'A' และสิ่งต่อไปนี้
การแจ้งเตือน ('' || 1); // 1จากด้านบนเรารู้ว่าด้านหน้า "เป็นเท็จหลัง 1 เป็นจริงและผลการส่งคืนคือ 1 ดูที่สิ่งต่อไปนี้
การแจ้งเตือน ('a' || 0); // 'a''A' แรกเป็นจริงและ 0 ถัดไปเป็นเท็จผลลัพธ์ผลตอบแทนคือ 'A' ต่อไปนี้ต่อไปนี้
การแจ้งเตือน ('' || 0); // 0ก่อนหน้านี้ "เป็นเท็จและ 0 ถัดไปเป็นเท็จและผลการส่งคืนคือ 0
การแจ้งเตือน (0 || ''); // ''
0 ครั้งแรกเป็นเท็จถัดไป "เป็นเท็จผลการส่งคืนคือ"
หมายถึง
1. ตราบเท่าที่ "||" เป็นเท็จต่อหน้า "||" ไม่ว่า "||" เป็นจริงหรือเท็จในด้านหลังของ "||" ค่าหลังจาก "||" จะถูกส่งคืน
2. ตราบเท่าที่ "||" เป็นความจริงไม่ว่า "||" เป็นจริงหรือเท็จค่าก่อน "||" จะถูกส่งคืน
ฉันเรียกสิ่งนี้ว่าหลักการลัดวงจร: ถ้าคุณรู้ผลลัพธ์ของสิ่งแรกคุณจะรู้เอาต์พุตหลังจากนั้น หากอันแรกเป็นจริงให้ใช้ค่าของอันแรกและถ้าอันแรกเป็นเท็จให้ใช้ค่าของอันที่สอง
6 ลูกที่ JS ต้องจำไว้: โปรดจำไว้ว่า: ในการดำเนินงานเชิงตรรกะของ JS, 0, "", Null, False, Undefined และ NAN จะถูกตัดสินว่าเป็นเท็จและคนอื่น ๆ เป็นจริง (ดูเหมือนว่าไม่มีการละเว้นโปรดยืนยัน) คุณต้องจำสิ่งนี้มิฉะนั้นจะมีปัญหากับแอปพลิเคชัน || และ &&.
โดยวิธีการ: ฉันมักจะถามคุณว่าทำไมฉันไม่เขียนว่า (attr) โดยตรงถ้า (attr);
อันที่จริงนี่เป็นวิธีการเขียนที่เข้มงวดมากขึ้น:
โปรดทดสอบความแตกต่างระหว่าง typeof 5 และ typeof !! 5. ฟังก์ชั่นของ !! คือการแปลงตัวแปรประเภทอื่นเป็นประเภทบูล
2. && (โลจิสติกส์และ)
แท้จริงแล้วจริงจะถูกส่งกลับเฉพาะเมื่อทั้งก่อนและหลังเป็นจริงมิฉะนั้นเท็จจะถูกส่งคืน
การแจ้งเตือน (true && false); // falsealert (true && true); // truealert (false && false); // FalseAlert (เท็จ && true); // เท็จ
จากนั้นขึ้นอยู่กับประสบการณ์ข้างต้นลองดูสถานการณ์ที่ตัวเลข "&&" ไม่ใช่แค่ประเภทบูลีน
การแจ้งเตือน ('' && 1); // ''ปมจะกลับมา "," && "ก่อน" เป็นเท็จและ 1 เป็นจริงหลังจากนั้น
การแจ้งเตือน ('' && 0); // ''ปมจะกลับมา "," && "ก่อน" เป็นเท็จและ 0 ก็เป็นเท็จ
การแจ้งเตือน ('a' && 1); // 1ปมคืน 1, "&&" ก่อน "a เป็นจริงและต่อไปนี้เป็น 1 ก็เป็นจริงเช่นกัน
การแจ้งเตือน ('a' && 0); // 0ปมส่งกลับ 0, "&&" ก่อน "a เป็นจริงและต่อไปนี้เป็น 0 เป็นเท็จ
การแจ้งเตือน ('A' && ''); // ''ปมจะกลับมา "," && "ก่อน" a เป็นจริงและ "หลังจาก" เป็นเท็จ
การแจ้งเตือน (0 && 'a'); // 0
ปมส่งกลับ 0, "&&" ก่อน "0 เป็นเท็จและ 'A' เป็นจริง
การแจ้งเตือน (0 && ''); // 0
ปมส่งกลับ 0, "&&" ก่อน "0 เป็นเท็จและหลัง" ก็เป็นเท็จเช่นกัน
หลักการลัดวงจร
1. ตราบใดที่ "&&" เป็นเท็จไม่ว่า "&&" เป็นจริงหรือเท็จค่าก่อน "&&" จะถูกส่งคืน;
2. ตราบใดที่ "&&" เป็นจริงไม่ว่า "&&" เป็นจริงหรือเท็จผลลัพธ์จะส่งคืนค่าหลังจาก "&&";
3. แอปพลิเคชันในการพัฒนา
สามรหัสต่อไปนี้เทียบเท่า:
a = a || "defaultValue"; if (! a) {a = "defaultValue"; } if (a == null || a == "" || a == undefined) {a = "defaultValue"; -คุณต้องการใช้อันไหน?
2. เช่น var yahoo = yahoo || - มีการใช้กันอย่างแพร่หลายมาก วิธีที่จะได้รับค่าเริ่มต้นที่สง่างาม? กว่า - - - อย่างอื่น ... ดีกว่าดีกว่า? : ดีกว่ามาก
3. การโทรกลับ && การโทรกลับ ()
ในการโทรกลับสิ่งนี้มักจะเขียนด้วยวิธีนี้และมันเข้มงวดมากขึ้น ก่อนอื่นให้ตรวจสอบว่ามีการโทรกลับหรือไม่ ถ้ามีอยู่ให้ดำเนินการ จุดประสงค์ในการเขียนด้วยวิธีนี้คือการป้องกันข้อผิดพลาดจากการรายงาน
หากคุณเขียนการโทรกลับ () โดยตรง; รหัสจะรายงานข้อผิดพลาดเมื่อไม่มีการโทรกลับ
4. ตัวอย่างที่ครอบคลุม
ข้อกำหนดจะแสดงในรูป:
เขียนคำอธิบายรูปภาพที่นี่
สมมติว่ามีการระบุอัตราการเติบโตดังนี้:
ลูกศร 1 ลูกจะปรากฏขึ้นเมื่ออัตราการเติบโตเป็น 5;
2 ลูกศรจะปรากฏขึ้นเมื่ออัตราการเติบโตเป็น 10;
ลูกศร 3 ลูกจะปรากฏขึ้นเมื่ออัตราการเติบโต 12;
ลูกศร 4 ลูกจะแสดงเมื่ออัตราการเติบโต 15;
คนอื่น ๆ ทั้งหมดแสดงลูกศร 0
จะนำไปใช้กับรหัสได้อย่างไร?
เล็กน้อยถ้าอื่น:
var add_level = 0; if (add_step == 5) {add_level = 1; } อื่นถ้า (add_step == 10) {add_level = 2; } อื่นถ้า (add_step == 12) {add_level = 3; } อื่นถ้า (add_step == 15) {add_level = 4; } else {add_level = 0; -สวิตช์ที่ดีกว่าเล็กน้อย:
var add_level = 0; สวิตช์ (add_step) {กรณีที่ 5: add_level = 1; หยุดพัก; กรณีที่ 10: add_level = 2; หยุดพัก; กรณีที่ 12: add_level = 3; หยุดพัก; กรณีที่ 15: add_level = 4; หยุดพัก; ค่าเริ่มต้น: add_level = 0; หยุดพัก;}หากข้อกำหนดเปลี่ยนเป็น:
อัตราการเติบโตคือ> 12 และ 4 ลูกศรแสดง
3 ลูกศรจะแสดงเมื่ออัตราการเติบโต> 10;
ความเร็วในการเจริญเติบโตคือ> 5 และ 2 ลูกศรจะปรากฏขึ้น
ความเร็วในการเติบโต> 0 แสดง 1 ลูกศร;
ความเร็วในการเติบโตคือ <= 0 และ 0 ลูกศรจะปรากฏขึ้น
จากนั้นมันจะลำบากมากที่จะนำไปใช้กับสวิตช์
คุณเคยคิดที่จะนำไปใช้ในบรรทัดเดียวหรือไม่?
ตกลงมาดูการแสดงออกที่ทรงพลังของ JS:
var add_level = (add_step == 5 && 1) || (add_step == 10 && 2) || (add_step == 12 && 3) || (add_step == 15 && 4) || 0;
ทรงพลังและดีกว่า:
var add_level = {'5': 1, '10 ': 2, '12': 3, '15 ': 4} [add_step] || 0;ข้อกำหนดที่สอง:
var add_level = (add_step> 12 && 4) || (add_step> 10 && 3) || (add_step> 5 && 2) || (add_step> 0 && 1) || 0;
ข้างต้นเป็นการวิเคราะห์ที่ครอบคลุมของ "&&" และ "||" ผู้ประกอบการใน JavaScript แนะนำให้คุณรู้จักโดยบรรณาธิการ ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!