CoffeeScript — язык программирования, который транслируется в JavaScript. Синтаксис CoffeeScript вдохновлен языками Ruby и Python. Автор языка Джереми Эшкинас (Jeremy Ashkenas) также известен созданием библиотек Underscore и Backbone.
Новый релиз языка направлен на сокращение разрыва между CoffeeScript и современным JavaScript (ES6, ES7). Так => и class транслируются соответственно в => и class. При этом. если в целевом рантайме та или иная возможность JS не поддерживается, может потребоваться дополнительная трансляция итогового JS.
Новое и измененное в версии 2:
-  модули: 
import/export; -  классы: 
class Animal; -  асинхронные функции: 
await someFunction(); -  стрелочные функции: 
=>; -  параметры функции по умолчанию: 
(options = {}) ->; -  оставшиеся параметры функции: 
(items...) ->; -  деструктурирующее присваивание: 
[first, second] = items,{length} = items; -  оператор расширения: 
{options..., force: yes},{force, otherOptions...} = options; -  шаблонные строки: 
"Hello, #{user}!"; -  тегированные шаблонные строки: 
html"<strong>coffee</strong>"; -  оператор 
for...of:for n from generatorFunction(). 
Примечательна поддержка JSX прямо в языке:
renderStarRating = ({ rating, maxStars }) ->
  <aside title={"Rating: #{rating} of #{maxStars} stars"}>
    {for wholeStar in [0...Math.floor(rating)]
      <Star className="wholeStar" key={wholeStar} />}
    {if rating % 1 isnt 0
      <Star className="halfStar" />}
    {for emptyStar in [Math.ceil(rating)...maxStars]
      <Star className="emptyStar" key={emptyStar} />}
  </aside>
Релиз обратно несовместим с версиями 1.X. Помимо прочего.
 некоторые возможности ECMAscript не были реализованы, например let и const.
>>> Подробности












