zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    分部视图在ASP.NET MVC中的应用
    SVN、Git设置提交时忽略的文件
    TortoiseSVN使用步骤和trunk,Branch,Tag详细说明
    SQL Server系统表介绍与使用
    C#中Task的使用简单总结
    Auto Encoder用于异常检测
    mac bash 下使用vi 快捷方式——因为没有alt键 所以没有办法 用vi模式也非常方便的
    daal utils printNumericTable
    https 不会被中间人攻击——因为中间人即使拿到了数据,也是加密的
    Let's Encrypt 免费通配符 SSL 证书申请教程——但是也需要email,域名所有权等,如果是黑产用的话会这样用吗?会不会暴露自己身份???
  • 原文地址:https://www.cnblogs.com/calamus/p/5440845.html
Copyright © 2011-2022 走看看