CoffeeScript提供了一種更好的構建字符串的解決方案。在雙引號字符串(單引號無效)中使用#{}
包含一個動態的值。數組
str = 'Hello, CoffeeScript.' console.log "#{str + ':)'}" # 輸出:Hello, CoffeeScript:)
CoffeeScript引入lambda表達式的形式來定義函數。函數
函數定義:code
# 定義有參函數並調用 sayHello = (name)-> return "Hello, #{name}!" sayHello "Programmer" # 輸出Hello, Programmer! # 定義無參函數並調用 sayGoodBye = -> return "Bye now!" sayGoodBye() # 輸出Bye now!
大多數狀況下,CoffeeScript不支持形如function sayHello(name){...}
的命名函數,只支持綁定函數。coffeescript
JavaScript中的命名函數在文件中其餘一切以前執行定義,可是綁定函數不遵循此規則,綁定函數只在函數聲明(定義)的位置執行聲明操做,也就是說,只有在此以後的代碼能夠調用此函數,在綁定函數以前沒法調用此函數。ip
CoffeeScript中函數有一個重要特性:隱式返回。即函數中若是沒有顯式給定返回的值,那麼函數將以運行時執行的最後一條語句結果做爲返回值。字符串
其中,若是最有一條語句爲if
語句,則在if
語句的每一個分支中都加入return
語句;若是是for循環,則返回每次循環執行結果組成的數組,it
若是肯定函數不會返回,那麼能夠再函數末尾添加一個沒有返回值的return語句或者null。io
CoffeeScript中的switch使用switch,when和else做爲語句關鍵字,break命令自動插入到控制結構中。其中,when語句能夠接受多個值的匹配,使用逗號隔開,還能夠使用then語句將語句塊縮短至一行console
switch iSpy when 'sky' console.log 'blue' when 'grass', 'frog' console.log 'green' when 'lake' then 'dark' else console.log 'grey'