CoffeeScript入门

本文介绍了CoffeeScript,一种简洁的编程语言,它编译成JavaScript。内容涵盖CoffeeScript的安装、函数用法、词法作用域、条件语句、循环、操作符、继承等,旨在简化JavaScript的编写。CoffeeScript的特性如闭包、默认参数、变参和对象遍历等,让编程更加简洁高效。
摘要由CSDN通过智能技术生成

官网文档传送门

CoffeeScript简介

CoffeeScript 是一门编译到 JavaScript 的小巧语言. 在 Java 般笨拙的外表下, JavaScript 其实有着一颗华丽的心脏. CoffeeScript 尝试用简洁的方式展示 JavaScript 优秀的部分.

CoffeeScript 的指导原则是: “她仅仅是 JavaScript”. 代码一一对应地编译到 JS, 不会在编译过程中进行解释. 已有的 JavaScript 类库可以无缝地和 CoffeeScript 搭配使用, 反之亦然. 编译后的代码是可读的, 且经过美化, 能在所有 JavaScript 环境中运行, 并且应该和对应手写的 JavaScript 一样快或者更快.

换而言之,CoffeeScript只是将JS给简化,使得JS的编码更加人性化。虽然CoffeeScript编译出来的JS看起来并不简单,但CoffeeScript编写的时候确实会减少不少代码量。具体可参照后文的例子。

CoffeeScript安装

CoffeeScript可以通过npm安装和管理。首先你要安装nodeJS,然后通过以下命令安装:

npm install -g coffee-script

coffee命令使用

安装之后, 你应该可以运行 coffee 命令以执行脚本, 编译 .coffee 文件到 .js 文件, 和提供一个交互式的 REPL. coffee命令有下列参数:

参数 作用
-c, –compile 编译一个 .coffee 脚本到一个同名的 .js 文件
-m, –map 随 JavaScript 文件一起生成 source maps. 并且在 JavaScript 里加上 sourceMappingURL 指令
-i, –interactive 启动一个交互式的 CoffeeScript 会话用来尝试一些代码片段. 等同于执行 coffee 而不加参数.
-o, –output [DIR] 将所有编译后的 JavaScript 文件写到指定文件夹. 与 –compile 或 –watch 搭配使用.
-j, –join [FILE] 编译之前, 按参数传入顺序连接所有脚本到一起, 编译后写到指定的文件. 对于编译大型项目有用.
-w, –watch 监视文件改变, 任何文件更新时重新执行命令.
-p, –print JavaScript 直接打印到 stdout 而不是写到一个文件.
-s, –stdio 将 CoffeeScript 传递到 STDIN 后从 STDOUT 获取 JavaScript. 对其他语言写的进程有好处. 比如:cat src/cake.coffee coffee -sc
-l, –literate 将代码作为 Literate CoffeeScript 解析. 只会在从 stdio 直接传入代码或者处理某些没有后缀的文件名需要写明这点.
-e, –eval 直接从命令行编译和打印一小段 CoffeeScript. 比如:coffee -e "console.log num for num in [10..1]"
-b, –bare 编译到 JavaScript 时去掉顶层函数的包裹.
-t, –tokens 不对 CoffeeScript 进行解析, 仅仅进行 lex, 打印出 token stream: [IDENTIFIER square] [ASSIGN =] [PARAM_START (]
–nodejs node 命令有一些实用的参数, 比如--debug, --debug-brk, --max-stack-size, 和 --expose-gc. 用这个参数直接把参数转发到 Node.js. 重复使用 --nodejs 来传递多个参数.
-n, –nodes 不对 CoffeeScript 进行编译, 仅仅 lex 和解析, 打印 parse tree:
Expressions
  Assign
    Value "square"
    Code "x"
      Op *
        Value "x"
        Value "x"

函数

函数体组成

coffee的函数通过一组可选的圆括号包裹的参数, 一个箭头, 一个函数体来定义

square = (x) -> x * x

等同于

square = function(x) {
   
  return x * x;
};

返回值

函数体的最后一条表达式会作为返回值返回。

无参数情况

如果不需要参数,则可以省略参数列表,表示为

square = -> 'empty'

相当于

square = function() {
  return 'empty';
};

多参数和默认值

如果需要多个参数,只需要按(参数1,参数2…)的形式写就好。
参数可以设置默认值,例如

add = (x = 4, y = 3) -> x + y
add 5

等同于

add = function(x, y) {
   
  if (x == null) {
    x = 4;
  }
  if (y == null) {
    y = 3;
  }
  return x + y;
};

add(5);

闭包表示

函数还有另一种表示方法,就是用=>代替->,两者的区别在于前者会解释成闭包函数

square = (x) => x * x

解释为:

square = (function(_this) {
   
  return function(x) {
   
    return x * x;
  };
})(this);

变参

使用 JavaScript 的 arguments 对象是一种处理接收不定数量个参数的函数常用办法. CoffeeScript 在函数定义和调用里提供了变参(splats) ...的语法, 让不定个数的参数使用起来更愉悦一些.

gold = silver = rest = "unknown"

awardMedals = (first, second, others...) ->
  gold   = first
  silver = second
  rest   = others

contenders = [
  "Michael Phelps"
  "Liu Xiang"
  "Yao Ming"
  "Usain Bolt"
]

awardMedals contenders... 

alert "The Field: " + rest

解释为:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值