Domanda

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?

È stato utile?

Soluzione

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.

Altri suggerimenti

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';
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top