CoffeeScript 介绍
CoffeeScript是一套JavaScript的转译语言,创建者 Jeremy Ashkenas 戏称它是- JavaScript 的不那么铺张的小兄弟。因为 CoffeeScript 会将类似 Ruby 语法的 代码 编译成 JavaScript,而且大部分结构都相似,但不同的是 CoffeeScript 拥有更严格的语法。
CoffeeScript和TypeScript一样,都是编译为JavaScript的语言,它们都增强了JavaScript的表达能力。 所谓编译为JavaScript,是指CoffeeScript和TypeScript没有实现自己的运行时,它们都是编译为等价的JavaScript 代码 ,然后放在JavaScript的解释器上运行。?
CoffeeScript给人最大的印象就是其简洁的表达。?
# 赋值:
number = 42
opposite = true
# 条件:
number = -42 if opposite
# 函数 :
square = (x) -> x * x
# 数组:
list = [1,2,3,4,5]
# 对象:
math =
root: Math.sqrt
square: square
cube: (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)
上面的 代码 会编译为等价的JavaScript 代码 :?
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,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;
})();
run: cubes
CoffeeScript力求简洁。其简洁性首先表现在对一些仅用于语法控制的符号进行了 去除 。这其中 包括 :
取消分号
取消var声明
取消大括号包围内层 代码 ,使用缩进取代
函数 调用 在没有歧义的情况下可以省略括号
var声明涉及到复杂又很鸡肋的JavaScript变量作用域机制。这部分 内容 先放着不讲。CoffeeScript通过完全取消var声明机制而使得问题得到简化。总之,在CoffeeScript世界里,变量不用事先声明,直接用就是了。而且这种 用法 基本没有什么危险。
缩进在CoffeeScript中不仅仅在于美化 代码 ,其代表了 代码 层次的组织,是有特别的含义的。简单地说就是,不适用大括号包围内层 代码 ,而是内层 代码 要缩进。不同的缩进代表了不同的 代码 层次。形式和 内容 是一致的。
?
?
网站地址 : http://coffeescript.org/
GitHub: https://github.com/jashkenas/coffeescript
网站描述: 一套JavaScript的转译语言
CoffeeScript官方网站
官方网站: http://coffeescript.org/
如果觉得 网站内容还不错,欢迎将 网站 推荐给程序员好友。