CoffeeScriptnode
---->安裝node.js數組
---->安裝coffeeScript瀏覽器
語句:less
注意:沒有分號,語句由新的一行結束;多條語句寫到同一行時須要分號表示一條語句的結束(不經常使用);函數
經過在行尾加上\表示語句延續到下一行;測試
變量:this
和js不一樣,CoffeeScript的變量不須要定義,默認全部變量都是局部變量。spa
聲明全局變量:global.myGlobalVariable="I am calamus!"code
在瀏覽器中用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()