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)
secara logis (a ? b : a)
dan berperilaku seperti multiplikasi (mis. !!a * !!b
)
(a || b)
secara logis (a ? a : b)
dan berperilaku seperti penambahan (mis. !!a + !!b
)
(a = 0, b)
kependekan dari tidak peduli jika a
itu benar, secara implisit kembalib
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
Precedence Operator JavaScript (Urutan Operasi)
Perhatikan bahwa operator koma sebenarnya adalah operator yang paling tidak diistimewakan, tetapi tanda kurung adalah yang paling istimewa, dan mereka berjalan seiring ketika membangun ekspresi satu baris.
Pada akhirnya, Anda mungkin memerlukan 'thunks' daripada nilai-nilai yang dikodekan dengan keras, dan bagi saya, thunk adalah fungsi dan nilai yang dihasilkan ('hal' yang sama).
const windowInnerHeight = () => 0.8 * window.innerHeight; // a thunk
windowInnerHeight(); // a thunk