CoffeeScript簡介 <一>

介紹

coffeeScript是一種輕量級的編程語言,能夠用編譯器生成原生javascript代碼。它簡化了許多javascript繁瑣的方式,可讓你用簡單的方式直接使用一行程序表明javascript多行代碼,並且編譯後還會根據最佳實踐優化javascript代碼。它的語法像是pythonruby的混合,不用括號控制排版,直接用縮進表示。建議初學者一邊寫coffeescript,一邊對照生成的javascript代碼,能夠很快的瞭解coffeescript的意義。 瀏覽器最後執行的仍是編譯後的javascript代碼。javascript

語法

去掉多餘的符號&&使用縮進

首先來看一個 coffeescript demo:java

if elvis
  alert "oh no"
  elvis = 3

編譯成 javascript 代碼以後:python

if (elvis){
  alert("oh no");
  elvis = 3;
}

看上面的coffee代碼和js代碼,js中的圓括號被去掉了,畫括號也去掉了,分號;也去掉了。編程

再好比:c#

if elvis
  alert "oh no"
elvis = 3

編譯成 javascript 代碼以後:瀏覽器

if (elvis){
  alert("oh no");
}
elvis = 3;

最後一句代碼縮進方式不一樣,致使最終編譯的js也不同,coffee就是根據tab縮進來進行排版的。ruby

函數

聲明函數時coffee默認會把最後一行做爲函數的返回值,能夠不加return,若是返回值爲空,能夠加上return編程語言

例如:函數

fill = (x) ->
  x * x

編譯後的js爲:優化

var fill;
fill = function(x){
  return x * x;
}

字符串佔位符

這是coffe中最愛的一點,由於javascript中沒有相似c#中的string.Format()方法,拼接很長的字符串時代碼看起來可讀性不好。

# 這是cofee的註釋
eat = (x) -> alert "I eat #{x}!"
eat food for food in ['toast', 'cheese', 'wine']

編譯後的js代碼:

var eat, food, _i, _len, _ref;

eat = function(x) {
  return alert("I eat " + x + "!");
};

_ref = ['toast', 'cheese', 'wine'];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  food = _ref[_i];
  eat(food);
}

這裏能夠看出來使用coffee有多省事了吧。

區間使用

coffee有一個像java同樣的...的語法:

# ... 表示區間
numbers = [0,1,2,3,4,5,6,7,8,9]
copy = numbers[0...numbers.length]
middle = numbers[3...6]

關於 ==!= 之間的比較

在coffee中沒有==,一概使用===,因此也就沒有!=,只有!==。javascript中=====的區別是:

三等操做符===用來判斷兩個變量是否相等,相等的前提是一樣的類型和一樣的值。

具體請參考個人另外一篇文章

對象判空

coffee可使用?來判斷參數是否已定義或是null值,例如:

if elvis?
  alert "oh no"
  elvis = 3

編譯後的js代碼:

var elvis;

if (typeof elvis !== "undefined" && elvis !== null) {
  alert("oh no");
  elvis = 3;
}
相關文章
相關標籤/搜索