คำก่อนหน้านี้
ตัวดำเนินการเชิงตรรกะดำเนินการบูลีนในตัวถูกดำเนินการและมักจะใช้ร่วมกับผู้ให้บริการเชิงสัมพันธ์ ตัวดำเนินการเชิงตรรกะรวมการแสดงออกเชิงสัมพันธ์หลายอย่างเข้ากับนิพจน์ที่ซับซ้อนมากขึ้น ตัวดำเนินการเชิงตรรกะแบ่งออกเป็นสามประเภท: Logical Non-'!', Logical และ '&&', Logical หรือ '||' บทความนี้จะแนะนำผู้ให้บริการตรรกะทั้งสามนี้
ตรรกะ
ตรรกะที่ไม่ใช่ตัวดำเนินการจะถูกแสดงด้วยเครื่องหมายอัศเจรีย์ (!) และสามารถนำไปใช้กับค่าใด ๆ ใน eCmascript โดยไม่คำนึงถึงประเภทข้อมูลค่านี้คือตัวดำเนินการนี้จะส่งคืนค่าบูลีน ตรรกะที่ไม่ใช่ผู้ดำเนินการจะแปลงตัวถูกดำเนินการเป็นค่าบูลีนก่อนแล้วจึงผกผัน
ประเภทการแปลงของตัวถูกดำเนินการแบบไม่ใช้ตรรกะเป็นประเภทบูลีนนั้นเหมือนกับฟังก์ชั่นการแปลงบูลีน () ยกเว้นว่าผลลัพธ์จะกลับด้านในที่สุด หากมีการใช้ตรรกะที่ไม่ใช่ผู้ดำเนินการสองตัวในเวลาเดียวกันพฤติกรรมของฟังก์ชั่นการแปลงบูลีน () จะถูกจำลองจริง
console.log (!! undefined); // falseconsole.log (!! null); // falseconsole.log (!! 0); // falseconsole.log (!!-0); // falseconsole.log (!! nan); // falseconsole.log (
console.log (!! {}); // trueconsole.log (!! []); // trueconsole.log (!! บูลีนใหม่ (เท็จ)); // trueconsole.log (!! เท็จ); // falseconsole.log (ตรรกะที่ไม่ใช่ผู้ดำเนินการมักจะใช้ในการควบคุมลูป
// ตัวแปรบูลีน (bfound) ใช้เพื่อบันทึกว่าการค้นหานั้นสำเร็จหรือไม่ เมื่อพบรายการข้อมูลในคำถาม Bfound จะถูกตั้งค่าเป็นจริง! bfound จะเท่ากับเท็จซึ่งหมายความว่าการวิ่งจะกระโดดออกจากขณะที่วนรอบ var bfound = false; var i = 0; ในขณะที่ (! bfound) {ถ้า (avalue [i] == vsearchValues) } else {i ++; -ตรรกะและ
ตรรกะและตัวดำเนินการแสดงโดยสองผลรวม (&&) มีสองตัวถูกดำเนินการ ผลลัพธ์จะกลับมาเป็นจริงเฉพาะในกรณีที่ตัวถูกดำเนินการทั้งสองเป็นจริงมิฉะนั้นจะถูกส่งคืน
// โลจิสติกส์และ (&&) ตารางความจริง, ตัวถูกดำเนินการครั้งแรก, ตัวถูกดำเนินการครั้งที่สองผลลัพธ์จริงจริงจริงจริงจริงจริงเท็จเท็จปลอมเท็จปลอมเท็จเท็จ
ตรรกะและการดำเนินงานสามารถนำไปใช้กับตัวถูกดำเนินการทุกประเภทไม่ใช่แค่บูลีน หากหนึ่งในตัวถูกดำเนินการไม่ใช่บูลีนตรรกะและการดำเนินงานไม่จำเป็นต้องส่งคืนค่าบูลีน
ตรรกะและการดำเนินงานเป็นการดำเนินการลัดวงจร หากตัวถูกดำเนินการแรกสามารถกำหนดผลลัพธ์ได้ตัวถูกดำเนินการที่สองจะไม่ถูกประเมินอีกต่อไป
สำหรับตรรกะหากตัวถูกดำเนินการแรกเป็นเท็จไม่ว่าตัวถูกดำเนินการที่สองจะเป็นค่าใดผลลัพธ์เป็นเท็จแล้วตัวถูกดำเนินการครั้งแรกจะถูกส่งคืน; หากตัวถูกดำเนินการแรกเป็นจริงดังนั้นความจริงและเท็จของผลลัพธ์จะเหมือนกับจริงและเท็จของตัวถูกดำเนินการที่สองแล้วตัวถูกดำเนินการที่สองจะถูกส่งกลับ
// ยกเว้นค่าเท็จเจ็ดค่าของเท็จ, ไม่ได้กำหนด, null, +0, -0, nan และ '' ส่วนที่เหลือเป็นค่าที่แท้จริงทั้งหมด console.log ('t' && ''); // เพราะ 't' เป็นค่าที่แท้จริงมันส่งคืน '' console.log ('t' && 'f'); // เพราะ 't' เป็นค่าที่แท้จริงมันส่งคืน 'f'console.log (' t '&&' '); // เพราะ 't' เป็นค่าที่แท้จริงมันส่งคืน '' console.log ('' && ''); // เพราะ '' เป็นค่าเท็จมันจะส่งคืน '' console.log ('' && ''); // เพราะ '' เป็นค่าเท็จมันจะส่งคืน '' 'console.log (' '&&' '); // เพราะ '' เป็นค่าเท็จมันจะส่งคืน '' ''var i = 1; var result = (true && i ++); console.log (ผลลัพธ์, i); // เพราะจริงเป็นค่าที่แท้จริง, เรียกใช้ i ++, ฉันคือ 2, ผลลัพธ์คือ 1var i = 1; var result = (false && i ++); console.log (ผลลัพธ์, i); //
สามารถใช้ตรรกะและตัวดำเนินการได้หลายวิธีโดยส่งคืนค่าของการแสดงออกบูลีนแรกด้วยเท็จ
console.log (true && 'foo' && '' && 4 && 'foo' && true); // '
ลำดับความสำคัญของตัวดำเนินการเชิงสัมพันธ์สูงกว่าตรรกะและ (&&) และตรรกะหรือ (||) ดังนั้นการแสดงออกที่คล้ายกันสามารถเขียนได้โดยตรงโดยไม่ต้องเพิ่มวงเล็บ
if (a+1 == 2 && b+2 == 3) {// todo}ตรรกะและตัวดำเนินการสามารถใช้แทนโครงสร้างได้หากโครงสร้าง
if (a == b) {dosomething ();} // เทียบเท่ากับ (a == b) && dosomething ();ตรรกะและตัวดำเนินการมักจะใช้ในฟังก์ชั่นการโทรกลับ
// หากค่าไม่ถูกส่งผ่านไปยังพารามิเตอร์ A A คือค่าเริ่มต้นที่ไม่ได้กำหนดและเป็นค่าเท็จดังนั้น A () จะไม่ถูกดำเนินการเพื่อป้องกันข้อผิดพลาด หากค่าถูกส่งผ่านไปยังพารามิเตอร์ A ฟังก์ชัน A () ฟังก์ชัน fn (a) {ถ้า (a) {a (); }} // เทียบเท่ากับฟังก์ชัน fn (a) {a && a ();}ตรรกะหรือ
ตรรกะหรือตัวดำเนินการแสดงโดยสองเส้นแนวตั้ง (||) มีสองตัวถูกดำเนินการ เฉพาะเมื่อทั้งสองตัวถูกดำเนินการเป็นเท็จผลลัพธ์จะส่งคืนเท็จมิฉะนั้นจะถูกส่งคืน
// โลจิสติกส์หรือ (||) ตารางความจริง, ตัวถูกดำเนินการครั้งแรก, ตัวถูกดำเนินการครั้งที่สองผลลัพธ์จริงจริงจริงจริงจริงจริงเท็จจริงจริงเท็จเท็จเท็จเท็จเท็จเท็จ
ในทำนองเดียวกันตรรกะหรือการดำเนินการสามารถนำไปใช้กับตัวถูกดำเนินการทุกประเภทไม่ใช่แค่บูลีน หากหนึ่งในตัวถูกดำเนินการไม่ใช่บูลีนตรรกะหรือการดำเนินการไม่จำเป็นต้องส่งคืนค่าบูลีน
ตรรกะหรือการดำเนินการยังเป็นการดำเนินการลัดวงจร หากตัวถูกดำเนินการแรกสามารถกำหนดผลลัพธ์ได้ตัวถูกดำเนินการที่สองจะไม่ถูกประเมินอีกต่อไป
สำหรับตรรกะหรือหากตัวถูกดำเนินการแรกเป็นจริงผลลัพธ์จะเป็นจริงโดยไม่คำนึงถึงมูลค่าของตัวถูกดำเนินการที่สองและตัวถูกดำเนินการครั้งแรกจะถูกส่งคืน; หากตัวถูกดำเนินการแรกเป็นเท็จความจริงและเท็จของผลลัพธ์จะเหมือนกับจริงและเท็จของตัวถูกดำเนินการที่สองตัวถูกดำเนินการที่สองจะถูกส่งกลับ
console.log ('t' || ''); // เพราะ 't' เป็นค่าที่แท้จริงมันส่งคืน "t" console.log ('t' || 'f'); // เพราะ 't' เป็นค่าที่แท้จริง ค่ามันส่งคืน ""var i = 1; var result = (true || i ++); console.log (ผลลัพธ์, i); // เพราะจริงคือค่าที่แท้จริง i ++ ไม่ได้ดำเนินการผลลัพธ์เป็นจริงฉันคือ 1var i = 1; var result = (เท็จ || i ++); console.log (ผลลัพธ์, i); //
ในทำนองเดียวกันตรรกะหรือตัวดำเนินการสามารถใช้ในการต่อกันหลายครั้งเพื่อส่งคืนค่าของนิพจน์บูลีนแรก
console.log (เท็จ || 0 || '' || 4 || 'foo' || true); // 4
ตรรกะหรือตัวดำเนินการมักจะใช้เพื่อตั้งค่าเริ่มต้นสำหรับตัวแปร
// หากไม่มีวัตถุถูกส่งผ่านไปยังพารามิเตอร์ P พารามิเตอร์จะถูกตั้งค่าเป็นวัตถุเปล่าโดยฟังก์ชั่นเริ่มต้น fn (p) {p = p || -ข้างต้นคือการวิเคราะห์เต็มรูปแบบของตัวดำเนินการ JavaScript - ตัวดำเนินการเชิงตรรกะที่นำมาให้คุณโดยบรรณาธิการ ฉันหวังว่าทุกคนจะสนับสนุน wulin.com ~