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

  • 相关阅读:
    Python使用SMTP模块、email模块发送邮件
    harbor搭建及使用
    ELK搭建-windows
    ELK技术栈之-Logstash详解
    【leetcode】1078. Occurrences After Bigram
    【leetcode】1073. Adding Two Negabinary Numbers
    【leetcode】1071. Greatest Common Divisor of Strings
    【leetcode】449. Serialize and Deserialize BST
    【leetcode】1039. Minimum Score Triangulation of Polygon
    【leetcode】486. Predict the Winner
  • 原文地址:https://www.cnblogs.com/calamus/p/5440845.html
Copyright © 2011-2022 走看看