DEV Community

Logical assignment operators in JavaScript

hemanth.hm on August 29, 2020

Logical assignment operators in JavaScript combine Logical Operators and Assignment Expressions. //"Or Or Equals" x ||= y; x || (x = y); ...
Collapse
 
cnt000 profile image
Edoardo Gargano

Nice work, thank you for sharing.

I understand better the ??= example with a console.log and changing assignment here: repl

So opts.dog ??= 'bow'; means: if opts.dog is not set, assign bow

Collapse
 
jeromecovington profile image
Jerome Covington

Nice work on a very useful addition to the language. Great to see you stuck with it.

Collapse
 
mjswensen profile image
Matt Swensen

Nice work, @hemanth ! These will be super handy

Collapse
 
hakonkrogh profile image
Håkon Krogh

Very useful new features! Looks like you got the variables mixed up in the examples:

x || (y = z);

Should be

x || (x = y);

... unless I got this all wrong?

Collapse
 
hemanth profile image
hemanth.hm

True, fixed it. I was trying to bring in another variable.

Collapse
 
fkereki profile image
Federico Kereki

Hi! I'm not sure -- isn't x ||= y the same as x = x || y ? This is aligned to how other operators (+=, *=, etc.) do work.

Collapse
 
hemanth profile image
hemanth.hm • Edited

x ||= 1 would mean x || (x = 1)

Collapse
 
cascandaliato profile image
cascandaliato

Aren't the two expressions x = x || y and x || (x = y) equivalent?

Collapse
 
andreasloukakis profile image
Andreas Loukakis

Imho, it would be important to emphasise on ??= checking for null and undefined, while ||= checking for falsy values. Could save some bugs :D

Same as:
0 || 42 // 42
0 && 42 // 0
0 ?? 42 // 0

Collapse
 
hemanth profile image
hemanth.hm