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.
>>> Подробности













