15
回答
初探 CoffeeScript
【腾讯云】学生服务器套餐10元/月 >>>   
上周末我去参加了Java开发者大会讨论了几个非常有意思的话题。有名演讲者谈到了Underscore,当时他使用的演示都是基于CoffeeScript完成的。我以前与CoffeeScript这玩意有过一面之缘,但经过他这次讲解后我打算重新再好好研究一下。如果你曾经在浏览器上使用过JavaScript 或者再服务端用过 Nodejs。那么你上手CoffeeScript就相当简单了。

请记住你根本不需要使用 CoffeeScript,如果你本身就喜欢JavaScript那么你当然可以继续使用JavaScript。而这篇文章的目的是向你们介绍CoffeeScript带来的几点好处。

CoffeeScript应用程序是以JavaScript应用的方式的运行的。在CoffeeScript程序被启动前,它被转换成对等的JavaScript应用。所以说白了,真正运行的程序实质上依然是JavaScript,只不过是利用了CoffeeScript的诸多好处而已。

几个有意思的地方:
1, 如果你对Python比较熟悉的话,那么一开始你绝对会喜欢CoffeeScript,因为CoffeeScript的语法也是使用分号结束符与大括号代码块形式的。

2, return 表达式不需要 "return" 关键字因为最后一句就代表返回的信息。虽然你也可以使用return关键字,但压根就没人这么做。

3, 当你创建一个新变量时,该变量被定义为局部变量,这就意味着我们不可能随意创建一个全局变量。所以一开始请小心地分配好全局变量。

CoffeeScript有一点我非常喜欢,就是用"or"关键字代替||符号,同理用"and"关键字代替&&

下面是一个CoffeeScript的简单范例:
value1 = true
value2 = true
 
if value1 and value2
   alert true
else
   alert false


这段代码如果翻译成JavaScript,就是:
value1 = true;
value2 = true;
 
if (value1 && value2) {
  alert(true);
} else {
  alert(false);
}


比如我想创建一个简单方法接受一个参数然后回一句"Hello":
sayHello = (name) -> alert "Hello #{name}"
 
sayHello 'Chad'


对应的JavaScript代码就是:
var sayHello;
 
sayHello = function(name) {
  return alert("Hello " + name);
};
 
sayHello('Chad');


好了,下面让我们创建一个方法,接受两个参数,其中一个参数具有默认值:
sayHello = (name, greeting = "Hello") ->
  alert "#{greeting} #{name}!"
 
sayHello 'Chad', 'Bonjour'
sayHello 'Chad'


看到没,我调用此方法两次,第一次我提供了第二个方法参数,而第二次我没有写第二个参数(那么第二个参数实质就是方法定义的默认值)。所以第一次返回的结果是 Bonjour Chad,而第二次是 Hello Chad

接着看看对应的 JavaScript 代码:
var sayHello;
 
sayHello = function(name, greeting) {
  if (greeting == null) {
    greeting = "Hello";
  }
  alert(greeting + " " + name + "!");
};
 
sayHello('Chad', 'Bonjour');
sayHello('Chad');


下面来看看 CoffeeScript 提供的自动 return 功能:
positiveOrNegative = (value) ->
  if value > 0
    "Positive"
  else
    "Negative"
 
alert positiveOrNegative 123
alert positiveOrNegative -123


对应的 JavaScript:
var positiveOrNegative;
 
positiveOrNegative = function(value) {
  if (value > 0) {
    return "Positive";
  } else {
    return "Negative";
  }
};
 
alert(positiveOrNegative(123));
alert(positiveOrNegative(-123));


展望未来...
你能从这里找到有关于 CoffeeScript 技术的一切。同时现在你也能从市面上买到这两本专门讲解 CoffeeScript 的书籍。
举报
junwong
发帖于6年前 15回/3K+阅
顶部