coffeeScript 语法总结

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比较运算符转换
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()

     

本文首发于Calamus的博客

本文版权归作者和博客园共有,欢迎转载,但未经作者 (梁素娅) 同意必须保留此段声明,且在文章页面明显位置给出  原文链接

侍奉无上至尊的傻子们欢迎大家加入我的群一起玩耍:575180837

原文地址:https://www.cnblogs.com/calamus/p/5440845.html