A CoffeeScript programozási nyelv

Nyelvi elemek

Jelkészlet, azonosítók

A nyelv jelkészlete és azonosítói nagyrészt megegyeznek a JavaScript-ben megismerttel. Különbség gyakorlatilag csak megjegyzések és elválasztójelek használatában van.

A CoffeeScript elválasztójelként a whitespace karakteretek használja. Szóval nincs szükség a ; lezáró karakterre elég egy új sort kezdeni. Arra is van lehetőség, hogy egy sorba több utasítást írjunk, ilyenkor a ; az elválasztó karakter.

A blokkokat behúzással jelöljük, úgy mint Pythonban.

String literálok

Alapvetően itt is ugyanaz a helyzet mint JavaScript esetén, de van pár kiegészítés, specialitás.

Több soros string literálok

A CoffeeScript megengedi a többsoros stringek használatát:

mobyDick = "Call me Ishmael. Some years ago -- never mind how long precisely -- having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world..."

Heredoc

A CoffeeScript támogat egy másfajta többsoros stringet is amit "Heredoc"-nak neveznek. Ez arra használható, hogy olyan string literálokat írjunk amely érzékeny a behúzásra vagy egyéb formázott szöveget tartalmaz. Az ilyen stílusú literálokat három idézőjellel nyitjuk és zárjuk.

html = """ <strong> cup of coffeescript </strong> """

Ha egy idézőjel határolt stringbe a #{x} karaktersorozatot írjuk, akkor az x kifejezés kiértékelődik, majd beillesztődik a stringbe.

sentence = "#{ 22 / 7 } is a decent approximation of π"

A CoffeeScript támogat úgynevezett kiterjesztett reguláris kifejezéseket. Ezek a heredoc-hoz hasonlóan figyelmen kívül hagyják a belső whitespace karaktereket és tartalmazhatnak belső megjegyzéseket is. A CoffeeScript ezt a fajta literált "Heregex"-nek hívja. Célja, hogy jól olvashatóan lehessen komplex reguláris kifejezéseket megadni. Ezt a literált /// karakterekkel kell kezdeni és ezzel is kell zárni.

/// ^ ( ?: [-=]> # function | [-+*/%<>&|^!?=]= # compound assign / compare | >>>=? # zero-fill right shift | ([-+:])\1 # doubles | ([&|<>])\2=? # logic / shift | \?\. # soak access | \.{2,3} # range or splat ) ///

A CoffeeScript az egysoros megjegyzést a # karakter jelöli. Az # után írt szöveget a CoffeeScript fordító nem generálja bele a kimenteti JavaScript kódba.

Amennyiben olyan megjegyzést szeretnénk írni amelyet szeretnénk, hogy bekerüljön a kimeneti kódba is, akkor használhatjuk az úgynevezett "Herecomment"-eket is. Ezek a heredocs-hoz hasonlóan megtartják a formázásokat. Ideális megoldás licencek headerekhez. A herecommenteket ### karakterek közé írjuk:

### CoffeeScript Compiler v1.2.0 Released under the MIT License ###

A CoffeeScript megoldást kínál a JavaScript egyik legnagyobb hibaforrására, a globális változókra. JavaScriptben túl könnyű véletlenül globális változót definiálni a váltózó előtti var kulcsszó lehagyásával. A CofffeeScript úgy oldja meg a problémát, hogy egyszerűen eltávolítja a globális változókat. A színfalak mögött, a CoffeeScript a szkripeteket egy anonymous függvény belsejébe helyezi és minden változó behozatalt automatikusan a var kulcsszóval definiál. Ezáltal tartva meg a lokális kontextust.

# CoffeeScript myVariable = "test" // JavaScript var myVariable; myVariable = "test";

Ahogyan látható a változóértékadás teljesen lokális, lehetetlen véletlenül globális változót deklarálni. A CoffeeScript tesz még egy lépést előre és nehezebbé teszi a felsőbb szintű változók árnyékolását. Sokat segítve a legtöbb általános JavaScript fejlesztői tévesztés elkerülésén.