CoffeeScript是甚麼?CoffeeScript社群說"It's just JavaScript"。正是,它就是JavaScript。你可能會想它是不是像jQuery,是個類庫,幫我們去做一些經常要做的事情呢?非也!CoffeeScript實在是一個新語言,它改善了很多JavaScript的弱點。若你有Python的經驗,學習CoffeeScript便會容易得多,例如,你可以不再用{}了。那麼如何定義block呢?就像Python,用indentation!
看不明白以上的描述,好好看看書罷!上網可找到大量的材料,不贅。但既然如此,還是甚麼JavaScript呢?雖然語法改了,但你仍是在寫JavaScript,CoffeeScript的源程式會被編譯成JavaScript,實際執行的仍然是JavaScript。
先看看一個極簡單的例子
CoffeeScript
number = 42
opposite = true
編譯成JavaScript後會變成
var number, opposite;
number = 42;
opposite = true;
單看這個例子CoffeeScript並沒有做太偉大的的事情,祗是加上了變量宣告(variable declaration)和; 而已!
但再看看下面的例子
CoffeeScript
list = [1, 2, 3, 4, 5]
for i in list
alert i
編譯成JavaScript後會變成
var i, list, _i, _len;
list = [1, 2, 3, 4, 5];
for (_i = 0, _len = list.length; _i < _len; _i++) {
i = list[_i];
alert(i);
}
留意,上面的alert(i)前面是有一個空格的,有Python經驗的就不會對這佰生。
但若是這樣寫又如何
list = [1, 2, 3, 4, 5]
alert i for i in list
限於篇幅,不能再詳舉例子了,以我個人來說,CoffeeScript幫忙最大的是對類的定義和使用,請大家再參考文檔罷!
有人曾發起一個論壇,論題就是,一個熟悉JavaScript的programmer,還有必要去學CoffeeScript嗎?這類問題當然不會有甚麼確切的答案,但我個人就認為,CoffeeScript應可提高程式的質素,特別是穩定性,我的答案是肯定的!
我一向對JavaScript都沒有太大的好感,特別是其有些古怪的的語法,如==與===之別;又例如,要對不同的browser要有不同處理的方法等等……而jQuery的出現,解決了很多問題,但我都仍然維持如非如要,JavaScript可免則免的態度!CoffeeScript就令我對JavaScript有所改觀。
CoffeeScript最初是用Ruby寫的,後來就用‘自己’去寫‘自己’,即CoffeeScript是用CoffeeScript寫的!
這種情況在電腦科學上並不新鮮,不少(包括最早的)C Compiler都是用C寫的!可能你會覺得變成了雞與蛋的問題,究竟是有C program先還是有C Compiler先?解決這個問題有多種方法,例如,對CoffeeScript來說便簡單,因為它本來是用Ruby寫的,它毫無困難地可以用CoffeeScript寫成新版本的Compiler,再編譯成JavaScript,由這步起,它便可以自己Compile自己。
順帶一提,CoffeeScript的目標代碼是JavaScript,主要在browser內執行,可不可以在browser以外執行呢?可以,使用Node.js便是一個好辦法。實在,CoffeeScript的Compiler正是由Node.js所執行的!