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 ...
随机推荐
- HTTP协议的安全性--全站HTTPS
HTTP Basic Authentication很容易让攻击者监听并获取用户名密码.使用Base64来encode用户名密码也只是为将用户名和口令中的不兼容字符转换为均与HTTP协议兼容的字符集. ...
- oracle 运维基础
setupDatabase() { runStr=" cd $BASE_INSTALL_DIR/database nohup ./runInstaller -silent -force -r ...
- bug_ _小心android-support-v4.jar版本混乱造成的NoClassDefFoundError
当你的项目出现以下红色提示的时候,要小心了, 因为很可能因为这个错误而导致解释不通的异常出现. Found 2 versions of android-support-v4.jar in the de ...
- A+B问题 涉及EOF
输入将包括一系列对的整数a和b,通过一空间,一对每行整数分离的. 产量 对于每对输入的整数a和b你应该输出的a和b的总和在一行,并用输出的一个行中输入每一行. 样本输入 1 5 2 3 样本输 ...
- FBI传授9秘诀:如何看穿对方在撒谎 z
第1招:不提及自身和姓名 美国赫特福德郡大学的心理学家韦斯曼说,〝人们在说谎时会本能地把自己从他们所说的谎言中剔除出去〞.所以如果你向某人提问时,他们总是反覆地省略〝我〞,他们就有被怀疑的理由了.反过 ...
- NLP学习资源
Journals ACM Transactions on Information Systems (TOIS) 影响因子 5.059(2006) IEEE Transactions on Knowl ...
- iOS推送通知的实现步骤
一.关于推送通知 来源:http://blog.csdn.net/enuola/article/details/8627283 推送通知,也被叫做远程通知,是在iOS 3.0以后被引入的功能.是当程序 ...
- ExtGrid
刷新表中数据 Ext.getCmp('SystemManage_role_ContainPresonnel_grid').store.reload(); store.load({ url: '/dat ...
- ArcGIS 通视分析工作原理
通过通视分析工具可根据在 3D 空间中相对于某表面或多面体要素类提供的障碍的位置,计算各线要素的第一个和最后一个折点之间的通视性.前一个折点定义为观测点,后一个折点为观测目标.沿着这些点之间的视线确定 ...
- MS SQL SERVER 数据库日志压缩方法与代码
MS SQL性能是很不错的,但是数据库用了一段时间之后,数据库却变得很大,实际的数据量不大.一般都是数据库日志引起的!数据库日志的增长可以达到好几百M. DUMP TRANSACTION [数据库名] ...