a = (b = 'string is truthy'); // b gets string; a gets b, which is a primitive (copy)
a = (b = { c: 'yes' }); // they point to the same object; a === b (not a copy)
(a && b)
มีเหตุผล(a ? b : a)
และทำตัวเหมือนการคูณ (เช่น!!a * !!b
)
(a || b)
มีเหตุผล(a ? a : b)
และมีพฤติกรรมเหมือนการเพิ่ม (เช่น!!a + !!b
)
(a = 0, b)
สั้นสำหรับไม่สนใจถ้าa
เป็นความจริงส่งกลับโดยปริยายb
a = (b = 0) && "nope, but a is 0 and b is 0"; // b is falsey + order of operations
a = (b = "b is this string") && "a gets this string"; // b is truthy + order of ops
จาวาสคริปต์ดำเนินการก่อนหน้า (ลำดับของการดำเนินการ)
โปรดทราบว่าผู้ประกอบการเครื่องหมายจุลภาคเป็นผู้ประกอบการที่ได้รับสิทธิน้อยที่สุด แต่วงเล็บเป็นสิทธิพิเศษมากที่สุดและพวกเขาจะไปจับมือกันเมื่อสร้างนิพจน์บรรทัดเดียว
ในที่สุดคุณอาจต้องการ 'thunks' มากกว่าค่าฮาร์ดโค้ดและสำหรับฉันแล้ว thunk เป็นทั้งฟังก์ชันและค่าผลลัพธ์ (สิ่งเดียวกัน)
const windowInnerHeight = () => 0.8 * window.innerHeight; // a thunk
windowInnerHeight(); // a thunk