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
Переважність оператора JavaScript (Порядок операцій)
Зауважте, що оператор комами насправді є найменш привілейованим оператором, але дужки є найбільш привілейованими, і вони йдуть рука об руку при побудові однорядкових виразів.
Врешті-решт, вам можуть знадобитися «thunks», а не твердо кодовані значення, і для мене, thunk - це і функція, і результат, що отримується (те саме «річ»).
const windowInnerHeight = () => 0.8 * window.innerHeight; // a thunk
windowInnerHeight(); // a thunk