CoffeeScript简介 二
集合与迭代
..
与 ...
先看例子:
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
CoffeeScript
与 jQuery
$(function(){})||
$ ->
比如:
$(function() {$('h1').click(function() {$(this).html('I am clicked');});
});||
$ -> $('h1').click -> $(@).html 'I am clicked'
Require
与 Backbone
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简介 二相关推荐
- CoffeeScript 简介与安装步骤概览
CoffeeScript 简介与安装步骤概览 一.关于CoffeeScript CoffeeScript是一门新兴的构建在JavaScript之上的预处理器语言,经过编译可以生成高效的JavaScri ...
- TiDB 简介(二)
参考:TiDB 简介_福海鑫森的博客-CSDN博客_tidb开发语言 TiDB 简介 | PingCAP Docs TiDB 是 PingCAP 公司自主设计.研发的开源分布式关系型数据库,是一款同时 ...
- 单元测试及NUnit测试框架简介(二)
一.单元测试框架的选择 在选择单元测试框架时,可以从以下几个方面去考虑: 支持自动检测注册用例:框架能否支持简单地构造用例并自动注册测试用例到测试框架中: 支持测试Fixture:即是否支持为一组测试 ...
- PP模块快速入门之功能简介(二)
根据以下任何一个随机模型进行预测:平均移动 ,指数平滑常数模型 ,指数平滑趋势模型 ,指数平滑季节性模型 ,组合趋势/指数平滑季节性模型 R/3可以用最适用分析来自动地选择随机模型,你也可以人工选择模 ...
- web API简介(二):客户端储存之document.cookie API
概述 前篇:web API简介(一):API,Ajax和Fetch 客户端储存从某一方面来说和动态网站差不多.动态网站是用服务端来储存数据,而客户端储存是用客户端来储存数据.document.cook ...
- 【FFmpeg】FFmpeg 相关术语简介 二
文章目录 一.码率与帧率 二.ffmpeg.ffplay.ffprobe 可执行文件 一.码率与帧率 帧率 : 帧频率 , 视频中每秒钟含有视频帧的帧数 , 一秒钟刷新多少张图像 , 连续移动的图像至 ...
- GCD简介二:多核心的性能
一.概念 为了在单一进程中充分发挥多核的优势,我们有必要使用多线程技术.在低层,GCD全局dispatch queue仅仅是工作线程池的抽象.这些队列中的Block一旦可用,就会被dispatch到工 ...
- typescript和coffeescript简介
typescript 1.什么是typescript?和JavaScript有什么关系? 1.它是一门独立的语言,实现了自己的编译器 2.它的目标代码是JavaScript(很多语言的目标代码是机 ...
- 网站开发综合技术 一 JavaScript简介 二JavaScript语法
第1部分 JavaScript简介 1.JavaScript它是个什么东西? 它是个脚本语言,需要有宿主文件,他的宿主文件是html文件. 2.它与Java有什么关系? 没有什么直接联系,java是S ...
最新文章
- yum下载包保存到本地
- 慕课python第四周测试卷_中国大学慕课用Python玩转数据期末考试查题公众号答案...
- [转载]IPhone之NSFileManager的使用
- C语言如何编辑资源文件,用C语言做个简单的计算机,上面是代码,请教上资源文件在哪里编写,要新建什么文件...
- 一步一步写算法(之递归和堆栈)
- mongodb存入mysql_存储到Mysql、mongoDB数据库
- 别熬夜加班了,Facebook 开源了一款代码推荐神器!| 程序员硬核评测
- 当我们谈论 996 的时候我们在谈论什么?
- android反编译之获得res下的xml配置文件及图片等资源
- THREEJS - 模型居中
- C语言 rtmp测试代码,在mac本地搭建rtmp服务器用于测试
- 利用 MAC 自带的 mount_ntfs 工具加载ntfs移动硬盘进行数据读写
- pve远程连接 spcie_惠普 SL250s Gen8 服务器编译PVE内核通过禁用RMRR来实现pcie直通
- 数学分析 - 定积分(待修改)
- 阿里云ECS简易部署教程
- MEGA软件——系统发育树构建方法(图文讲解) 转载
- linux解压工具软件,linux 安装rar解压工具
- 埃尔米特多项式 (Hermite Polynomials)简介(1)
- 一套完整的Android通用框架
- P4设计实现链路监控