Question

This CoffeeScript:

x = y > z ? 'a' : 'b'

Compiles to:

x = (_ref = y > z) != null ? _ref : {
  'a': 'b'
};

I assume this is expected, just not intuitive.

This there a better way to do this in coffeescript?

Était-ce utile?

La solution

CoffeeScript's ? operator is the existence operator ("soak" or "elvis" names are also used). exemple : context = window ? global.

The CoffeeScript way of doing it is x = if x > z then 'a' else 'b' (or x = x > z and 'a' or 'b', but the "and" operand must be truthy for this to work) which will compile down to the ternary operator you'd expect.

Autres conseils

You can use if instead of ?::

x = if y > z then 'a' else 'b'

this compiles to

var x;

x = y > z ? 'a' : 'b';

I guess this is what I want, but I don't know if I happy with it.

Coffeescript:

x = if y > z then 'a' else 'b'

Javascript

x = y > z ? 'a' : 'b';
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top