coffeescript.md

Личный сайт Go-разработчика из Казани

CoffeeScript - это небольшой язык, который компилируется один-в-один в эквивалентный код на языке JavaScript, а потому он не интерпретируется во время исполнения JavaScript кода. Ключевой особенностью CoffeeScript является то, что он пытается создать читабельный, качественно оформленный и плавный JavaScript код, прекрасно работающий в любой среде JavaScript.

Также загляните на официальный сайт языка, где можно найти весьма полное учебное пособие по CoffeeScript.

1# CoffeeScript - язык хипстеров. 2# Язык использует самое модное из множества современных языков. 3# Эти комментарии по стилю похожи на комментарии Ruby или Python, они используют "решетку" в качестве знака комментария. 4 5### 6Блоки комментариев выделяются тремя символами "решетки", в результирующем JavaScript коде они будут преобразованы в '/ * и '* /'. 7 8Перед тем, как идти далее, Вам нужно понимать семантику JavaScript. 9### 10 11# Присвоение: 12number = 42 #=> var number = 42; 13opposite = true #=> var opposite = true; 14 15# Условия: 16number = -42 if opposite #=> if(opposite) { number = -42; } 17 18# Функции: 19square = (x) -> x * x #=> var square = function(x) { return x * x; } 20 21fill = (container, liquid = "coffee") -> 22 "Заполняем #{container} жидкостью #{liquid}..." 23#=>var fill; 24# 25#fill = function(container, liquid) { 26# if (liquid == null) { 27# liquid = "coffee"; 28# } 29# return "Заполняем " + container + " жидкостью " + liquid + "..."; 30#}; 31 32# Списки и диапазоны: 33list = [1..5] #=> var list = [1, 2, 3, 4, 5]; 34 35# Объекты: 36math = 37 root: Math.sqrt 38 square: square 39 cube: (x) -> x * square x 40#=> var math = { 41# "root": Math.sqrt, 42# "square": square, 43# "cube": function(x) { return x * square(x); } 44#} 45 46# Многоточия: 47race = (winner, runners...) -> 48 print winner, runners 49#=>race = function() { 50# var runners, winner; 51# winner = arguments[0], runners = 2 <= arguments.length ? __slice.call(arguments, 1) : []; 52# return print(winner, runners); 53#}; 54 55# Проверка на существование объекта: 56alert "Так и знал!" if elvis? 57#=> if(typeof elvis !== "undefined" && elvis !== null) { alert("Так и знал!"); } 58 59# Итерации по массивам: 60cubes = (math.cube num for num in list) 61#=>cubes = (function() { 62# var _i, _len, _results; 63# _results = []; 64# for (_i = 0, _len = list.length; _i < _len; _i++) { 65# num = list[_i]; 66# _results.push(math.cube(num)); 67# } 68# return _results; 69# })(); 70 71foods = ['broccoli', 'spinach', 'chocolate'] 72eat food for food in foods when food isnt 'chocolate' 73#=>foods = ['broccoli', 'spinach', 'chocolate']; 74# 75#for (_k = 0, _len2 = foods.length; _k < _len2; _k++) { 76# food = foods[_k]; 77# if (food !== 'chocolate') { 78# eat(food); 79# } 80#}

На почитать