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)
là logic (a ? b : a)
và hoạt động như phép nhân (ví dụ. !!a * !!b
)
(a || b)
là hợp lý (a ? a : b)
và hành xử như bổ sung (ví dụ. !!a + !!b
)
(a = 0, b)
là viết tắt của việc không quan tâm nếu a
là sự thật, hoàn toàn trở lạib
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
Ưu tiên toán tử JavaScript (Trình tự hoạt động)
Lưu ý rằng toán tử dấu phẩy thực sự là toán tử ít đặc quyền nhất, nhưng dấu ngoặc đơn là đặc quyền nhất và chúng song hành với nhau khi xây dựng các biểu thức một dòng.
Cuối cùng, bạn có thể cần 'thunks' thay vì các giá trị được mã hóa cứng và đối với tôi, một thunk vừa là chức năng vừa là giá trị kết quả (cùng một 'điều').
const windowInnerHeight = () => 0.8 * window.innerHeight; // a thunk
windowInnerHeight(); // a thunk