Coffeescript Tidbit: '?' vs 'or'

July 22, 2017

If you use the ? operator to check for the existence of a variable like this: a?.b then you are using it right because the javascript looks like this:

if (typeof a !== "undefined" && a !== null) {
  a.b;
}

But I’ve seen this usage of the ? operator in my work’s codebase:

a ? b

which translates to:

if (typeof a !== "undefined" && a !== null) {
  a;
} else {
  b;
};

really you should be using or:

a or b

translates to:

a || b

Maybe a ? b gets optimized (I’m not sure), so I would use the or version to get the logical or property.