ในการดำเนินการเชิงตรรกะของ js ค่า 0, "", ค่าว่าง, ค่าเท็จ, ไม่ได้กำหนด และ NaN ทั้งหมดจะถูกตัดสินว่าเป็นค่าเท็จ และทุกสิ่งทุกอย่างจะถูกตัดสินว่าเป็นจริง
||คำนวณตัวถูกดำเนินการตัวแรกก่อน หากสามารถแปลงเป็นจริงได้ ให้ส่งกลับค่าของนิพจน์ทางด้านซ้าย มิฉะนั้น ให้คำนวณตัวถูกดำเนินการตัวที่สอง แม้ว่าตัวถูกดำเนินการของตัวดำเนินการ ||. จะไม่ใช่ค่าบูลีน แต่ก็สามารถถือเป็นการดำเนินการบูลีนหรือได้ เนื่องจากไม่ว่าค่าที่ส่งคืนจะเป็นประเภทใดก็ตาม ก็สามารถแปลงเป็นค่าบูลีนได้
ใช้ประโยชน์จากคุณลักษณะในการส่งคืนค่าที่ไม่ใช่บูลีน: ใช้ || สำหรับตัวถูกดำเนินการที่ไม่ใช่บูลีนเพื่อเลือกค่าแรกที่กำหนดและไม่ใช่ค่าว่างในชุดของค่าทางเลือก (ค่าแรกคือค่าที่ไม่ใช่เท็จ)
ตัวอย่าง:
var max = max_width ||. obj.max_width ||. 500 ;
var attr = attr ||. "";
&& จะประเมินนิพจน์แรกก่อน และหากเป็นเท็จ นิพจน์ที่สองจะไม่ได้รับการประมวลผล มิฉะนั้น นิพจน์ที่ตามมาจะถูกประมวลผลต่อไป เลือกค่าของนิพจน์แรกที่ไม่เป็นจริงจากซ้ายไปขวา และส่งกลับค่าของนิพจน์สุดท้ายหากไม่พบ
ตัวอย่าง: (ต้องพิจารณารสชาติให้ดี)
2 && 's1' && '123' && 'sss' ค่าของนิพจน์เท่ากับ 'sss'
2 && 's1' && '' && 'sss' ค่าของนิพจน์เท่ากับ ''
2 && 's1' && NaN && 'sss' ค่าของนิพจน์เท่ากับ NaN
ถ้า(ก >=5){
alert("สวัสดี");
-
สามารถทำให้ง่ายขึ้นเป็น:
a >= 5 && alert("สวัสดี");
ความแตกต่างระหว่าง typeof 5 และ typeof !!5 เป็นวิธีการเขียนที่เข้มงวดมากขึ้น ฟังก์ชันของ !! คือการแปลงตัวแปรประเภทอื่นให้เป็นประเภทบูล ตัวอย่างเช่น if(!!attr) => if(attr)
คุณลักษณะของ ||. และ && ใน js ไม่เพียงช่วยให้เราปรับปรุงโค้ดเท่านั้น แต่ยังช่วยลดความสามารถในการอ่านโค้ดอีกด้วย สิ่งนี้ทำให้เราต้องชั่งน้ำหนักด้วยตัวเอง
การใช้ฟังก์ชัน startWith อย่างชาญฉลาดใน JS, alert(!'asdf'.indexOf('s')) => !0 = true