A CoffeeScript elhagyja a meglehetősen bőbeszédű function kifejezést és lecseréli a vékony nyílra. A funkciók lehetnek egysorosak vagy behúzással több sorosak is. Az utolsó kifejezés a funkcióban az implicit visszatérési érték. Más szavakkal nem kell a return kulcsszót használni, hacsak a funkción belül nem szeretnénk hamarabb visszatérni.
A függvényeket egy opcionális paraméterlista egy nyíl és a függvény törzse definiálja. A paraméter lista a paraméterek neveit tartalmazza vesszővel elválasztva és az egészet egy zárójel veszi körbe. Az egyes paramétereknek lehetnek alapértelmezett értékei is. Ha nem null értéket adunk meg ezeknek, akkor az alapértelmezett érték lesz használva.
Mi a helyzet a paraméterek megadásával?
A CoffeeScript támogatja az alapértelmezett paramétereket is, példa:
Használhatunk nyelőket több argumentum elfogadásához a "..." -val:
A funkciók ugyanúgy hívhatóak mint a JavaScript-ben: zárójelekkel, az apply() vagy a call() kifejezések segítségével. A Ruby-hoz hasonlóan, a CoffeeScript is automatikusan meghívja a funkciót ha minimum 1 argumentummal paramétereztük fel.
Ha nem adunk át egy argumentumot sem a hívás során, a CoffeeScript nem tudja eldönteni, hogy a kifejezést meghívandó függvényként kezelje vagy változóként. Ebben a vonatkozásban, a CoffeeScript viselkedése eltér a Ruby-tól, amely mindig funkcióként hívja meg az hivatkozásokat. Ez egy lehetséges hibaforrás a CoffeeScript programokban, erre érdemes figyelmet szentelni, és kitenni a zárójeleket ha paraméterek nélkül szeretnénk meghívni a függvényt.
Fügvény kontextusA kontextus váltások mindennaposak a JavaScriptben, főleg függvények callback . A CoffeeScript ennek kezelésére biztosít néhány kényelmi funkciót. Az egyik ilyen segítő funkció a =>, a kettős nyíl funkció. A kettős nyílat használva a vékony nyíl helyett, a lokális kontextus a függvény kontextushoz fog kötődni.
Egy jó példa erre az, hogy az addEventListener() callback függvénye az adott element-re hajtódik végre, így a kontextus az adott element lesz. Ha szeretnénk megtartani az eredeti kontextus a lokális kontextusban, a self = this kerülőút nélkül akkor a kettős nyíllal ezt megtehetjük. A kötés ötlete hasonló elgondolás alapján működik a jQuery proxy() vagy a ES5' bind().funkciójához.
Az ok amikor ilyenre lehet szükségünk, az az hogy az addEventListener() callback függvénye az adott element-re hajtódik végre, így a kotextus az adott element lesz. Ha szeretnénk megtartani az eredeti kotextus a lokális kotextusban, a self = this kerülőút nélkül, a kettős nyíl egy módja ennek. A kötés ötlete hasonló elgondolás alapján működik a jQuery proxy() vagy a ES5' bind() funkciójához.
Megadhatóak argumentum objektumok is a függvényeknek. Ezzel változószámú argumentumokat adhatunk meg. A függvényhíváskor is használhatjuk a ... jelölést.