CoffeeScript tiene una sintaxis inspirada en Ruby y Python permitiendo que los scripts sean más sencillos de escribir y de leer.
CoffeeScript compila todo el código con extensión .coffee en JavaScript. La versión actual es la 0.9.1, y es una buena candidata a ser la versión definitiva.
Un ejemplo de código utilizando CoffeeScript
# Assignment: number = 42 opposite = true # Conditions: number = -42 if opposite # Functions: square = (x) -> x * x # Arrays: list = [1, 2, 3, 4, 5] # Objects: math = root: Math.sqrt square: square cube: (x) -> x * square x # Splats: race = (winner, runners...) -> print winner, runners # Existence: alert "I knew it!" if elvis? # Array comprehensions: cubes = math.cube num for num in list
Una vez compilado, la salida en javaScript será algo como lo siguiente.
var _i, _len, _ref, _result, cubes, list, math, num, number, opposite, race, square; var __slice = Array.prototype.slice; number = 42; opposite = true; if (opposite) { number = -42; } square = function(x) { return x * x; }; list = [1, 2, 3, 4, 5]; math = { root: Math.sqrt, square: square, cube: function(x) { return x * square(x); } }; race = function(winner) { var runners; runners = __slice.call(arguments, 1); return print(winner, runners); }; if (typeof elvis !== "undefined" && elvis !== null) { alert("I knew it!"); } cubes = (function() { _result = []; _ref = list; for (_i = 0, _len = _ref.length; _i < _len; _i++) { num = _ref[_i]; _result.push(math.cube(num)); } return _result; })();
Vía: Sitio oficial