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 |
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()
coffeeScript 语法总结的更多相关文章
- CSS3与页面布局学习总结(七)——前端预处理技术(Less、Sass、CoffeeScript、TypeScript)
CSS不像其它高级语言一样支持算术运算.变量.流程控制与面向对象特性,所以CSS样式较多时会引起一些问题,如修改复杂,冗余,某些别的语言很简单的功能实现不了等.而javascript则是一种半面向对象 ...
- CSS3与页面布局学习笔记(七)——前端预处理技术(Less、Sass、CoffeeScript、TypeScript)
CSS不像其它高级语言一样支持算术运算.变量.流程控制与面向对象特性,所以CSS样式较多时会引起一些问题,如修改复杂,冗余,某些别的语言很简单的功能实现不了等.而javascript则是一种半面向对象 ...
- CoffeeScript飞一样的写javascript
之前看到同事在使用coffeescript写js,当我看到那简介的coffee文件,就深深的被coffescript吸引了,简洁的语法,熟练之后会大大提升javascript的开发速度,写脚本也能像飞 ...
- AngularJS + CoffeeScript
AngularJS + CoffeeScript 前端开发环境配置详解 AngularJS 号称 '第一框架' ('The first framework') 确实是名不虚传.由其从jQuery中完全 ...
- typescript和coffeescript简介
typescript 1.什么是typescript?和JavaScript有什么关系? 1.它是一门独立的语言,实现了自己的编译器 2.它的目标代码是JavaScript(很多语言的目标代码是机 ...
- AngularJS + CoffeeScript 前端开发环境配置详解
AngularJS 号称 '第一框架' ('The first framework') 确实是名不虚传.由其从jQuery中完全转入AngularJS后就有无法离开他的感觉了.虽然AngularJS的 ...
- HTML5——前端预处理技术(Less、Sass、CoffeeScript)
一.Less 1.1.概要 Less是一种动态样式语言,Less 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量.Mixin.函数等特性,使 CSS 更易维护和扩展. Less 将 C ...
- 【干货分享】前端面试知识点锦集02(CSS篇)——附答案
二.CSS部分 1.解释一下CSS的盒子模型? 回答一:a.标准的css盒子模型:宽度=内容的宽度+边框的宽度+加上内边具的宽度b.网页设计中常听的属性名:内容(content).填充(padding ...
- select2
.select2-container .select2-choice { height: 34px; line-height: 34px; } .自定义 组件高度 在css 里面设置 .select2 ...
随机推荐
- (C#) 判断相等?
值类型直接用 == 号判断就好. 但是对于引用类型,需要实现IComparable 接口,或者重写 Equal 方法,来实现自己的比较目的. 因为对于引用类型,==号比较的是入口地址,对于同一个cla ...
- div里面的内容超出自身高度时,显示省略号
1.给DIV设置属性:width: 200px; text-overflow: ellipsis; overflow: hidden; 当div里面的内容总宽度找过 200PX的时候,超出的部分会以“ ...
- android 通知
https://developer.android.com/design/patterns/notifications.html 通知系统可让用户随时了解应用中的相关和即时事件,例如来自好友的新聊天信 ...
- Spring MVC 中文乱码的解决
对于POST方法提交的中文乱码 , 可在web.xml中添加如下代码 : <filter> <filter-name>encodingFilter</filter-nam ...
- java中使用session的一些细节
获取session的时候会产出一个sessionid并且发给客户端,第二次回发的时候再根据该sessionid获取session.如果cookies被禁用,则需要通过URL传入. asp.net下的s ...
- block的传值简单示例仅供参考,大牛勿喷
#import "ViewController.h" typedef void(^sumBlock)(int s);//声明为一个类型; /** * 用声明的block类型 su ...
- Quartz CronTrigger配置
关于cron表达式(来自网络): Cron 表达式包括以下 7 个字段: 秒 分 小时 月内日期 月 周内日期 年(可选字段) 特殊字符 Cron 触发器利用一系列特殊字符,如下所示: 反斜线(/)字 ...
- 常用的 Android Studio 快捷键
Android Studio 开发常用快捷键: 整理了使用 Android Studio 开发工具时常用到的一些快捷键,使用快捷键可以极大提高开发效率. 常用的 Android Studio 快捷键: ...
- 有向无环图(DAG)的最小路径覆盖(转)
DAG的最小路径覆盖 定义:在一个有向图中,找出最少的路径,使得这些路径经过了所有的点. 最小路径覆盖分为最小不相交路径覆盖和最小可相交路径覆盖. 最小不相交路径覆盖:每一条路径经过的顶点各不相同.如 ...
- ArcGIS Engine 图层裁剪 Clip的实现方法
方法一, 图层对图层裁剪,输出图层 ILayer pLayer; IFeatureLayer pFeatureLayer; IFeatureClass pFeatureClass; IWorkspac ...