概述

CoffeeScript是一门编译到JavaScript的小巧语言。CoffeeScript尝试用简洁的方式展示JavaScript优秀的部分。创建者Jeremy Ashkenas戏称它是JavaScript 的不那么铺张的小兄弟。
CoffeeScript就是将代码一一对应编译到JavaScript,当然了它仅仅是编译到JavaScript,不会在编译过程中执行JavaScript代码的。
CoffeeScript语法简洁,类似Ruby。基本原则就是用更少的代码实现更多的功能。编译过后的代码执行速度只会跟我们用JavaScript编写的代码一样快或者更快,大家不用担心执行速度的问题。

简单DEMO(选自官方)

编译前:

# 赋值:
number   = 42
opposite = true# 条件:
number = -42 if opposite# 函数:
square = (x) -> x * x# 数组:
list = [1, 2, 3, 4, 5]# 对象:
math =root:   Math.sqrtsquare: squarecube:   (x) -> x * square x# Splats:
race = (winner, runners...) ->print winner, runners# 存在性:
alert "I knew it!" if elvis?# 数组 推导(comprehensions):
cubes = (math.cube num for num in list)

编译后:

var cubes, list, math, num, number, opposite, race, square,__slice = [].slice;number = 42;opposite = true;if (opposite) {number = -42;
}square = function(x) {return x * x;
};list = [1, 2, 3, 4, 5];math = {root: Math.sqrt,square: square,cube: function(x) {return x * square(x);}
};race = function() {var runners, winner;winner = arguments[0], runners = 2 <= arguments.length ? __slice.call(arguments, 1) : [];return print(winner, runners);
};if (typeof elvis !== "undefined" && elvis !== null) {alert("I knew it!");
}cubes = (function() {var _i, _len, _results;_results = [];for (_i = 0, _len = list.length; _i < _len; _i++) {num = list[_i];_results.push(math.cube(num));}return _results;
})();

CoffeeScript系列教程(一)—概述相关推荐

  1. CoffeeScript系列教程(二)—安装和使用

    CoffeeScript是一门编译到JavaScript的语言,肯定需要一个编译器的.实际上CoffeeScript编译器也是用CoffeeScript编写的(自己编译自己?感觉好屌的样子!).你可以 ...

  2. 2021年最新最全Flink系列教程_Flink快速入门(概述,安装部署)(一)(JianYi收藏)

    文章目录 引言 相关教程直通车: day01_Flink概述.安装部署和入门案例 今日目标 Flink概述 什么是批处理和流处理 为什么需要流计算 Flink的发展史 Flink的官方介绍 Flink ...

  3. python机器学习案例系列教程——GBDT算法、XGBOOST算法

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 GBDT概述 GBDT也是集成学习Boosting家族的成员,但是却和传统的Adaboost有很大的不同.回顾下Adaboost,我们 ...

  4. python机器学习案例系列教程——BIRCH聚类

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 BIRCH概述 BIRCH的全称是利用层次方法的平衡迭代规约和聚类(Balanced Iterative Reducing and C ...

  5. WebRTC实时通信系列教程8 打通P2P连接和信令通信

    [转载请注明出处: http://blog.csdn.net/leytton/article/details/76836265]  PS:如果本文对您有帮助,请点个赞让我知道哦~ <WebRTC ...

  6. WebRTC实时通信系列教程9 数据通道图片传输

    [转载请注明出处: http://blog.csdn.net/leytton/article/details/76838194]  PS:如果本文对您有帮助,请点个赞让我知道哦~ <WebRTC ...

  7. EWSTM8系列教程03_主窗口、工具栏的概述

    IAR最新全套教程: 1.EWSTM8系列教程01_IAR介绍.下载.安装和注册 2.EWSTM8系列教程02_新建基础软件工程 3.EWSTM8系列教程03_主窗口.工具栏的概述 4.EWSTM8系 ...

  8. EWSTM8系列教程04_菜单概述(一)

    IAR最新全套教程: 1.EWSTM8系列教程01_IAR介绍.下载.安装和注册 2.EWSTM8系列教程02_新建基础软件工程 3.EWSTM8系列教程03_主窗口.工具栏的概述 4.EWSTM8系 ...

  9. 王姨劝我学HarmonyOS鸿蒙2.0系列教程之三Ability概述调用方法!

    原创PDF |<Android 深入系统完全讲解>免费开源,可能价值百万! 王姨劝我学HarmonyOS鸿蒙2.0系列教程之一环境搭建&&跑起来模拟器! 王姨劝我学Harm ...

最新文章

  1. 关于OUTLOOK 2007邮件无法打印的问题解决方法
  2. Socket 通信原理(Android客户端和服务器以TCPUDP方式互通)
  3. java线程同步的五种方法
  4. wxWidgets:wxEraseEvent类用法
  5. 对DataTable里数据进行排序
  6. nodejs mysql 编码_nodejs 查询mysql数据库的数据显示乱码
  7. pixelbook安装linux系统,谷歌Pixelbook可以运行Fuchsia操作系统 正测试
  8. idea中pom.xml文件横线解决办法
  9. FutureTask的get()方法之异常处理
  10. html解决ajax调用跨域,JQuery Ajax执行跨域请求数据的解决方案
  11. SqlServer数据库的语句及一些操作整理
  12. 计算机组成原理mips汇编大作业报告(冒泡排序、选择排序)
  13. CLion程序编译错误 0xC0000135
  14. 斜杠青年:人生的多种可能
  15. revit怎么看服务器文件,Revit载入族后,如何快速找到族文件?
  16. Python批量采集某网站高清壁纸,这下不用担心没壁纸换了
  17. 图论入门(一),拓扑排序生成拓扑序列与Dijkstra求最短路
  18. indexedDB使用
  19. 平面设计和ui设计_美丽的平面UI设计展示
  20. java 支付宝回调返回值,支付宝APP支付Java回调具体步骤

热门文章

  1. 基于Sigma protocol实现的零知识证明protocol集锦
  2. 新支持APP 公众号聊天在线客服程序源码
  3. STM32的AFIO时钟什么时候需要开启
  4. 2021年G1工业锅炉司炉考试平台及G1工业锅炉司炉作业考试题库
  5. 微信小程序网悦新闻开发--小程序配置(二)
  6. c语言字符就地逆置,高手看看我的C语言代码单链表实现就地逆置
  7. Java基础题10:(单选题)以下代码的输出结果是() public class Test { public static void main(String[] args) { Stri
  8. 漏洞挖掘所需能力梳理,查漏补缺(更新中~)
  9. “enumeration value ‘xxxxx‘ not handled in switch“警告
  10. 采闲云一朵,入墨修心!