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 ...
随机推荐
- eclipse下编译hadoop源代码(转)
hadoop是一个分布式存储和分布式计算的框架.在日常使用hadoop时,我们会发现hadoop不能完全满足我们的需要,我们可能需要修改hadoop的源代码并重新编译.打包. 下面将详细描述如何从sv ...
- c++学习-字符串
字符数组和 string类型比较的区别 #include<iostream> #include<string> using namespace std; class area{ ...
- 转-Fragment+FragmentTabHost组件(实现新浪微博底部菜单)
http://www.cnblogs.com/lichenwei/p/3985121.html 记得之前写过2篇关于底部菜单的实现,由于使用的是过时的TabHost类,虽然一样可以实现我们想要的效果, ...
- Apache2 添加登陆用户名和密码
1. 修改httpd.conf, 对要做认证的目录进行设置<Directory "/usr/local/var/www"> Options Indexes Foll ...
- UCOS-互斥信号量(学习笔记)
互斥信号量主要是为了解决信号量出现的优先级反转的情况:任务的运行取决于优先级和获得信号量2个条件,并且获得信号量又优先于设定的优先级.剥夺性内核对信号量进行独占访问,就有可能出现先获得信号量的低优先级 ...
- Mac下配置JAVA_HOME
http://blog.csdn.net/shallowgrave/article/details/39367119 闲来无事,装个Hbase玩玩,突然发现Mac下默认安装的JDK7,没有配置JAVA ...
- highstock实现股票分时
highchart学习网站 www.highcharts.com http://www.hcharts.cn/docs/index.php http://www.hcharts.cn/api/high ...
- java基础-排序
冒泡排序 选择排序 生成数组,数组元素值为1-1000
- 采访ServiceStack的项目领导Demis Bellot——第2部分(转)
ServiceStack是一个开源的.支持.NET与Mono平台的REST Web Services框架.InfoQ有幸与Demis Bellot深入地讨论了这个项目.在这篇两部分报道的第2部分中,我 ...
- Java中的Comparable<T>和Comparator<T>接口
有的时候在面试时会被问到Comparable<T>和Comparator<T>的区别(或者Java中两种排序功能的实现区别). 1) 在使用普通数组的时候,如果想对数据进行排序 ...