coffeeScript学习01
安装
- 这里使用node.js
npm install -g coffee-script
# watch and compile
coffee -w --output lib --compile src
//
coffee -w -c index.coffee
语法
- CoffeeScript不是JavaScript的超集,不能在CoffeeScript程序中写JavaScript代码
格式
CoffeeScript在编译时为每条语句加上;
CoffeeScript中的注释采用#
作用域
- 会自动添加变量声明‘var’,放到作用域的顶部
赋值
- 字符串可以用类ruby的语法内嵌
target = "world"
alert "hello, #{target}" //注意双引号
alert "hello" + target
- 字面量
object1 = one: 1, two: 2
object2 =
one: 1
two: 2
arr1 = [1, 2]
arr2 = [
1,
2
]
- 解构赋值
obj = {a:"foo", b:"bar"}
{a, b} = obj
arr = [1, 2]
[a, b] = arr
数组
- 数组的操作引入了来自ruby的Range概念,并且可以将字符串完全作为数组操作
numbers = [0..9] //两个或三个点号
numbers[3..5] = [-3,-4,-5] //替换number 3-5的值;可以是任意个数
my = "my string"[0..1]
- 判断一个值是否在数组内
arr = ["foo", "bar"]
"foo" in arr
- for..in语法
for name, i in ["roger", "roderick"]
alert "#{i} - Release #{name}"
- 过滤器when
items = ["ranger", "roderick", "brian"]
alert 'ok' for item in items when item is "ranger"
- 可以用()收集遍历的结果
items = [{id: 0, name: "ranger"}, {id: 1, name: "roderick"}, {id: 2, name: "brian"}]
result = (item for item in items when item.id is 1) //注意前面有个item;以数组形式返回
流程控制
函数
- CoffeeScript对JavaScript的函数做了很大的简化
sum = (nums) ->
nums.reduce(x, y) -> x + y
sum 1,2,3
//
(function() {
var sum;
sum = function(nums) {
return nums.reduce(x, y)(function() {
return x + y;
});
};
sum(1, 2, 3);
}).call(this);
- ->来代替function; 注意前面空一格
- 参数列表放在->的前边,且可省略
- 取消了函数声明,只能将函数作为值定义
- 在CoffeeScript中,任何语句都是表达式(除了break和continue),都有返回值,因此像ruby一样,不需要显式return
- CoffeeScript的函数可以有默认参数
times = (a = 1, b = 2) -> a * b
CoffeeScript的函数调用可以不用()语法包围参数,像ruby一样跟在函数名后面就可以,不过这也有时候会带来问题,特别是没有参数的调用
缩进的格式有时需要小心,比如用多个函数做参数的时候
$(".toggle").toggle ->
"on"
, ->
"off"
//
(function() {
$(".toggle").toggle(function() {
return "on";
}, function() {
return "off";
});
}).call(this);
coffeeScript学习01的更多相关文章
- Python学习--01入门
Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...
- Java虚拟机JVM学习01 流程概述
Java虚拟机JVM学习01 流程概述 Java虚拟机与程序的生命周期 一个运行时的Java虚拟机(JVM)负责运行一个Java程序. 当启动一个Java程序时,一个虚拟机实例诞生:当程序关闭退出,这 ...
- Android Testing学习01 介绍 测试测什么 测试的类型
Android Testing学习01 介绍 测试测什么 测试的类型 Android 测试 测什么 1.Activity的生命周期事件 应该测试Activity的生命周期事件处理. 如果你的Activ ...
- Java学习01
Java学习01 第一章 1.JRE与JDK JDK(JAVA Develop Kit,JAVA开发工具包)提供了Java的开发环境和运行环境,主要用于开发JAVA程序,面向Java程序的开发者; J ...
- ThinkPhp学习01
原文:ThinkPhp学习01 一.ThinkPHP的介绍 MVC M - Model 模型 工作:负责数据的操作 V - View 视图(模板 ...
- 【iScroll源码学习01】准备阶段 - 叶小钗
[iScroll源码学习01]准备阶段 - 叶小钗 时间 2013-12-29 18:41:00 博客园-原创精华区 原文 http://www.cnblogs.com/yexiaochai/p/3 ...
- JVM学习01:内存结构
JVM学习01:内存结构 写在前面:本系列分享主要参考资料是 周志明老师的<深入理解Java虚拟机>第二版. 内存结构知识要点Xmind梳理 案例分析 分析1 package com.h ...
- webservice学习01:wsdl文档结构
webservice学习01:wsdl文档结构 wsdl文档结构 WSDL文档示例 <wsdl:definitions xmlns:xsd="http://www.w3.org/200 ...
- spring学习(01)之IOC
spring学习(01)之IOC IOC:控制反转——Spring通过一种称作控制反转(IOC)的技术促进了低耦合.当应用了IOC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创 ...
随机推荐
- 【leetcode】Subsets (Medium) ☆
Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be ...
- 【leetcode】Reverse Integer(middle)☆
Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 总结:处理整数溢出 ...
- 【python】下载远程内容到本地
来源:http://www.jb51.net/article/42630.htm urllib模块 urlretrieve方法 urllib.urlretrieve(url[, filename[, ...
- Tmux的安装、使用与配置
tmux 安装.使用.配置 因上线需求,故需要使用tumx,方便上线 tmux功能 提供了强大的.易于使用的命令行界面 可横向.纵向分割窗口 窗格可以自由移动和调整大小,或者直接利用四个预设布局之一 ...
- MongoDB 3.0(1):CentOS7 安装MongoDB 3.0服务
目录(?)[-] 1下载安装 2MongoDB CRUD 1创建数据 2更新数据 3删除 4查询 5更多方法 3MongoDB可视化工具 4总结 本文原文连接: http://blog.csdn. ...
- NYOJ题目114某种序列
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAscAAAHuCAIAAAD83zYaAAAgAElEQVR4nO3dP1LjygIv4LcJ5yyE2A
- NYOJ之XX和OO
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAskAAAI0CAIAAABgWyN9AAAgAElEQVR4nO3dPW7jyt4n4NmEcy/EaW
- Quartus 11.0 的AS 下载方式和JTAG下载jic文件的方式
FPGA下载的三种方式:主动配置方式(AS)和被动配置方式(PS)和最常用的(JTAG)配置方式: AS由FPGA器件引导配置操作过程,它控制着外部存储器和初始化过程,EPCS系列.如EPCS1,EP ...
- IOS常用正则表达式
IOS常用正则表达式 正则表达式用于字符串处理.表单验证等场合,实用高效.现将一些常用的表达式收集于此,以备不时之需. 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是 ...
- SVN 升级后出现You need to upgrade the working copy first.
今天将svn更新后,出现 svn: The working copy at 'E:\591woospace\kst_fashion_alipay_v1.2.0\src\com\kstapp\wansh ...