CoffeeScript
---->安裝node.js
---->安裝coffeeScript
語句:
注意:沒有分號,語句由新的一行結束;多條語句寫到同一行時需要分號表示一條語句的結束(不常用);
通過在行尾加上\表示語句延續到下一行;
變量:
和js不同,CoffeeScript的變量不需要定義,默認所有變量都是局部變量。
聲明全局變量:global.myGlobalVariable="I am calamus!"
在瀏覽器中用window對象代替:window.myGlobalVariable="I am calamus!"
注釋:
單行注釋(編譯后不存在):以#開頭,行中間的# 之后的內容也是注釋內容。
#注釋內容;
多行注釋(很少用,編譯為js后為/**/):以###開頭和結尾的注釋塊
###
注釋塊內容
###
函數調用:
函數調用的優先級:參數由內向外分配給函數,即最近原則。
console.log("Hello,Calamus!")
console.log "Hello,Calamus!"
//有參數則小括號可以省略,但有時需要實用小括號消除歧義
Math.pow 2,3
//調用沒有參數的函數,必須實用括號
Date.now()
控制結構:不實用大括號,使用縮進控制代碼執行
if、else 和 else if語句:
calamus=16; if calamus>5 console.log "Calamus is greater than 5" if calamus>15 console.log "Calamus is greater than 5" console.log "Over"
單行形式:
console.log "Success!" if true==true
unless語句(測試條件為等價假值時執行分支語句塊):
day="Monday" unless day[0]=="S" console.log "Today is a weekday!" //編譯后的js代碼為: var day; day="Monday"; if(day[0]!=="S"){ console.log "Today is a weekday!" }
switch語句:
//編譯為js會添加break switch things when "ice" console.log "white" when "grass" then console.log "green" //也可以實用then縮短語句到一行 else console.log "gray"
比較運算符:
| CoffeeScript | JavaScript |
| is,== | === |
| isnt | !== |
| not | ! |
| and | && |
| or | || |
| true,yes,on | true |
| false,no,off | false |
| @,this | this |
| of | in |
| in |
數組:
languages =["english","chinese","french"] languages =[ "english", "chinese", "french"] //不實用逗號也可以 languages =[ "english" "chinese" "french"]
數列:
num=[0..9] //編譯為num=[0,1,2,3,4,5,6,7,8,9]; num=[0...9] //編譯為num=[0,1,2,3,4,5,6,7,8];三個點不包含尾邊界
簡單對象:
author={name:"Calamus",age:21} //可以省略逗號,大括號(縮進)
author.name
author["age"]
author.favoriteColor="black"
//對象的遍歷
for k,v of author
consoloe.log "My"+k+"is"+v
循環:
//遍歷數組每個元素很方便 animals=["dog","cat","brid"] for animal in animals console.log animal
函數:
匿名函數:
//參數為name的匿名函數,也可以有多個參數的 (name) -> return "Hello,#{name}!" //編譯后 (function(name){ return "Hello,"+name+"!"; }) //函數的調用 sayHello=(name) -> return "Hello,#{name}!" sayHello "Calamus"
命名函數:大多數情況下不支持命名函數,主要原因是IE對命名函數的支持非常弱,但可以實用綁定帶變量的方式給函數命名
函數的返回值
//如果函數沒有顯式的返回值,會把最后一句話當作函數的返回值 about = (phrase) -> "{phrase.toUpperCase()}!!!" //return 確定沒有返回值時加return //null 隱式返回 //編譯后的js var shout; shout = function (phrase){ return ""+(phrase.toUpperCase())+"!!!"; }
類:
//聲明一個類 class rabbit //創建類的實例 rabbit=new rabbit() rabbit.color="gray" //給類綁定方法,number為參數 class rabbit jump:(number)-> console.log "GrayRabbit" rabbit.jump()
構造函數:
//只需在前面加constructor class rabbit constructor:(num,type="diesel") -> @type=type; @number=number @load=0 @capacity=number * 100 describe : -> //其他內容
類的繼承:
//實用extends表明繼承關系 class animal behavior : -> console.log "jump" class rabbit extends animal //實例 myRabbit = new rabbit() myRabbit.behavior()
