Logical Assignment Operators
?? in optional chaining) and now we get more -- logical assignment operators. Let's check out how they can be used!
Or-Or-Equals is used to assign a value when one doesn't exist:
let name; const defaultName = "Guest"; name ||= defaultName; // name >> "Guest" // Equivalent: name || (name = defaultName);
Question-Question-Equals assigns value when the value is undefined:
const j = 1; j??= 10 // j >> 1 x = undefined; x ??= 10 // x >> 10
And-And-Equals assigns value to the last in line when both are defined:
let name; const defaultName = "Guest"; name &&= defaultName; name >> undefined // Both have values let name = "David"; const defaultName = "Guest"; name &&= defaultName; // name >> "Guest" // Equivalent: name && (name = defaultName);
I do worry, at least in the short term, that this new syntax could be hard to maintain, but just like every other new language feature, we'll get used to it!