集合与迭代

.....

先看例子:

arr = ["a1", "a2", "a3", "a4", "a5"]
arr[0..3] // ["a1", "a2", "a3", "a4"]
arr[-2..] // ["a4", "a5"]
arr[-3..3] // ["a3", "a4"]
arrRange = [1..5]//[1,2,3,4,5]

..包含右边区间。

arr = ["a1", "a2", "a3", "a4", "a5"]
arr[0...3] // ["a1", "a2", "a3"]
arr[-2...] // ["a4", "a5"]
arr[-3...3] // ["a3"]
arrRange = [1...5]//[1,2,3,4]

...不包含右边区间。

遍历

数组

arr = ["one", "two", "three", "four", "five"]

基本遍历:

console.log item for item in arr

加条件:

console.log item for item in arr when item isnt "two"

带索引:

console.log item for item,i in arr when i isnt 2

带循环项:

[1,5].map (i) -> console.log i*2 // 也可以用带索引的for循环

对象

obj = {a1: "a111", a2: "a222"}
console.log k,v for k,v of obj

循环

单行

console.log i for i in [0..5]

多行

for i in [0..5]console.log i

条件语句

基本语法

eat food if cat is hungry
play game unless cat is hungry
play game if cat isnt hungry

生成js代码为:

if (cat === hungry) {eat(food);
}if (cat !== hungry) {play(game);
}if (cat !== hungry) {play(game);
}

代码确实精简不少。

OO篇

使用coffeeScript实现面向对象写起来很爽。

类定义

class Animalconstructor: (name) ->@name = namesayhello: () ->console.log @name
animal = new Animal('ray')
animal.sayhello()

生成的js代码为:

var Animal, animal;
Animal = (function() {function Animal(name) {}return Animal;
})();this.name = name({sayhello: function() {}
});console.log(this.name);
animal = new Animal('ray');
animal.sayhello();

继承

class Animalconstructor: (name) ->@name = namesayhello: () ->console.log @name
class Cat extends Animalconstructor:(name,@hungry) ->super

CoffeeScriptjQuery

$(function(){})||
$ ->

比如:

$(function() {$('h1').click(function() {$(this).html('I am clicked');});
});||
$ -> $('h1').click -> $(@).html 'I am clicked'

RequireBackbone

define ['backbone''underscore''text!templates/yes.html'
], (Bacbone, _, tpl) ->class UserView extends Backbone.Viewevents: {}initialize: (options)->render: ->@$el.html _.template( tpl, {  } )

其他

对象判空

console?.log? 'log'

if (typeof console !== "undefined" && console !== null) {if (typeof console.log === "function") {console.log('log');}
}

关于 ->=>

cat = ->console.log this
cat = =>console.log @
# ->的结果
var cat;
cat = function() {return console.log(this);
};
# => 的结果
cat = (function(_this) {return function() {return console.log(_this);};
})(this);

也就是说:=>(胖头号)可以直接获取父级作用域中的this关键字。

最后

CoffeeScript简介 二相关推荐

  1. CoffeeScript 简介与安装步骤概览

    CoffeeScript 简介与安装步骤概览 一.关于CoffeeScript CoffeeScript是一门新兴的构建在JavaScript之上的预处理器语言,经过编译可以生成高效的JavaScri ...

  2. TiDB 简介(二)

    参考:TiDB 简介_福海鑫森的博客-CSDN博客_tidb开发语言 TiDB 简介 | PingCAP Docs TiDB 是 PingCAP 公司自主设计.研发的开源分布式关系型数据库,是一款同时 ...

  3. 单元测试及NUnit测试框架简介(二)

    一.单元测试框架的选择 在选择单元测试框架时,可以从以下几个方面去考虑: 支持自动检测注册用例:框架能否支持简单地构造用例并自动注册测试用例到测试框架中: 支持测试Fixture:即是否支持为一组测试 ...

  4. PP模块快速入门之功能简介(二)

    根据以下任何一个随机模型进行预测:平均移动 ,指数平滑常数模型 ,指数平滑趋势模型 ,指数平滑季节性模型 ,组合趋势/指数平滑季节性模型 R/3可以用最适用分析来自动地选择随机模型,你也可以人工选择模 ...

  5. web API简介(二):客户端储存之document.cookie API

    概述 前篇:web API简介(一):API,Ajax和Fetch 客户端储存从某一方面来说和动态网站差不多.动态网站是用服务端来储存数据,而客户端储存是用客户端来储存数据.document.cook ...

  6. 【FFmpeg】FFmpeg 相关术语简介 二

    文章目录 一.码率与帧率 二.ffmpeg.ffplay.ffprobe 可执行文件 一.码率与帧率 帧率 : 帧频率 , 视频中每秒钟含有视频帧的帧数 , 一秒钟刷新多少张图像 , 连续移动的图像至 ...

  7. GCD简介二:多核心的性能

    一.概念 为了在单一进程中充分发挥多核的优势,我们有必要使用多线程技术.在低层,GCD全局dispatch queue仅仅是工作线程池的抽象.这些队列中的Block一旦可用,就会被dispatch到工 ...

  8. typescript和coffeescript简介

    typescript 1.什么是typescript?和JavaScript有什么关系? 1.它是一门独立的语言,实现了自己的编译器   2.它的目标代码是JavaScript(很多语言的目标代码是机 ...

  9. 网站开发综合技术 一 JavaScript简介 二JavaScript语法

    第1部分 JavaScript简介 1.JavaScript它是个什么东西? 它是个脚本语言,需要有宿主文件,他的宿主文件是html文件. 2.它与Java有什么关系? 没有什么直接联系,java是S ...

最新文章

  1. yum下载包保存到本地
  2. 慕课python第四周测试卷_中国大学慕课用Python玩转数据期末考试查题公众号答案...
  3. [转载]IPhone之NSFileManager的使用
  4. C语言如何编辑资源文件,用C语言做个简单的计算机,上面是代码,请教上资源文件在哪里编写,要新建什么文件...
  5. 一步一步写算法(之递归和堆栈)
  6. mongodb存入mysql_存储到Mysql、mongoDB数据库
  7. 别熬夜加班了,Facebook 开源了一款代码推荐神器!| 程序员硬核评测
  8. 当我们谈论 996 的时候我们在谈论什么?
  9. android反编译之获得res下的xml配置文件及图片等资源
  10. THREEJS - 模型居中
  11. C语言 rtmp测试代码,在mac本地搭建rtmp服务器用于测试
  12. 利用 MAC 自带的 mount_ntfs 工具加载ntfs移动硬盘进行数据读写
  13. pve远程连接 spcie_惠普 SL250s Gen8 服务器编译PVE内核通过禁用RMRR来实现pcie直通
  14. 数学分析 - 定积分(待修改)
  15. 阿里云ECS简易部署教程
  16. MEGA软件——系统发育树构建方法(图文讲解) 转载
  17. linux解压工具软件,linux 安装rar解压工具
  18. 埃尔米特多项式 (Hermite Polynomials)简介(1)
  19. 一套完整的Android通用框架
  20. P4设计实现链路监控

热门文章

  1. 分布式事务解决方案,Seata的基本配置和使用
  2. SpringScerity的使用
  3. 信用评分系统运行原理上篇
  4. RocketMQ消息存储结构分析及相对于Kafka的优势
  5. System.getProperty(user.dir) 获取jar包所在目录
  6. Java高并发编程详解系列-线程通信
  7. 虚拟化与Docker
  8. libvirt热迁移报Connection refused错误解决办法
  9. github快速通道
  10. linux下C语言简单实现线程池