昨天花了點時間把官網的都玩過之後,有幾個比較有趣和要注意的地方:(為了比較容易看懂差異,所以同時貼了編譯後的結果,左邊的是CoffeeScript,右邊的是JavaScript)
昨天花了點時間把官網的都玩過之後,有幾個比較有趣和要注意的地方:(為了比較容易看懂差異,所以同時貼了編譯後的結果,左邊的是CoffeeScript,右邊的是JavaScript)
1.程式碼排版
因為Coffee使用排版的方式來區分區塊(tab),所以在寫的時候要注意,例如if的區塊表現:
if elvis |
if (elvis) { |
if elvis |
if (elvis) { |
少個tab就差很多了呦。
2.函式宣告
在函式宣告的時候,他預設會把你寫的最後一行當做回傳值,但是如果不要,可以加個return,例如:
fill = (x) -> |
var fill; |
fill = (x) -> |
var fill; |
3.文字套版
這個是我覺得最愛的地方,因為JavaScript沒有String.format這種東西(雖然ASP.NET AJAX有函式啦…)
#迴圈&套版 |
eat = function(x) { |
從這邊就可以看出來Coffee超省事的!
4.區間使用
Coffee有一個長的像Java一樣「…」的東西,例如:
#...表示區間 |
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; |
這個在函式參數也可以用,那個參數可以直接當做陣列來使用
awardMedals = (first, second, others...) –> |
awardMedals = function() { |
5.物件化寫法
Coffee可以讓程式看起來像是一般OO語言一樣:
# @name 表屬性, super 呼叫原父類的方法
move: (meters) ->
class Snake extends Animal
sam = new Snake "Sammy the Python" |
var Animal, Snake, sam; |
6.超直覺的大小比較
把三個數值的大小比較直接串一起~
cholesterol = 127 |
var cholesterol, healthy; |
7.關於「==」和「!=」之類的邏輯比較
在Coffee裡,他沒有「==」,而是一律使用「===」,所以也沒有「!=」,只有「!==」。所以使用上會更加嚴謹哦!(在JavaScript裡,==和===的差異在型別比較)
8.同時判斷是否定義及null的方式
Coffee有個可以簡便使用來判斷參數值是否已定義或是null,就是「?」
if elvis? |
if (typeof elvis !== "undefined" && elvis !== null) { |
9.函式參數預設值
JavaScript在使用函式給參數時,可以不需要全部賦值,但又想要在他沒賦值的情況下給預設值怎辦呢?直接在宣告函式的時候先指定就可以了!
fill = (container, liquid = "coffee") -> |
var fill; |