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)
est logiquement (a ? b : a)
et se comporte comme une multiplication (ex. !!a * !!b
)
(a || b)
est logiquement (a ? a : b)
et se comporte comme une addition (ex. !!a + !!b
)
(a = 0, b)
c'est l'abréviation de ne pas se soucier si a
est vrai, retourner implicitement 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
Prédominance des opérateurs JavaScript (ordre des opérations)
Notez que l'opérateur virgule est en fait l'opérateur le moins privilégié, mais que les parenthèses sont les plus privilégiées, et qu'elles vont de pair lors de la construction d'expressions d'une ligne.
Au bout du compte, vous aurez peut-être besoin de "thunks" plutôt que de valeurs codées en dur. Pour moi, un thunk est à la fois la fonction et la valeur résultante (la même "chose").
const windowInnerHeight = () => 0.8 * window.innerHeight; // a thunk
windowInnerHeight(); // a thunk
10 votes
L'AFFECTATION SE FAIT DE DROITE À GAUCHE précédence des opérateurs javascript
1 votes
Cela s'applique-t-il également si j'utilise
this.var1 = this.var2 = this.var3 = 1
?0 votes
Oui, jusqu'à ce que ce soit une variable globale car
this
fait référence à l'objet fenêtre.