Logical assignment operators in JavaScript combine Logical Operators and Assignment Expressions.
//"Or Or Equals"
x ||= y;
x || (x = y);
// "And And Equals"
x &&= y;
x && (x = y);
// "QQ Equals"
x ??= y;
x ?? (x = y);
So, say you have a function updateID
it can vary in the below ways:
const updateID = user => {
// We can do this
if (!user.id) user.id = 1
// Or this
user.id = user.id || 1
// Or use logical assignment operator.
user.id ||= 1
}
You could also use it with ??
function setOpts(opts) {
opts.cat ??= 'meow'
opts.dog ??= 'bow';
}
setOpts({ cat: 'meow' })
This is on stage-4 and you should be able to use it today!
I am happy that I was able to co-champion this proposal.
7 Years ago it was just a thought!