Skip to content

Instantly share code, notes, and snippets.

@doloopwhile
Last active December 16, 2015 11:19
Show Gist options
  • Save doloopwhile/5426335 to your computer and use it in GitHub Desktop.
Save doloopwhile/5426335 to your computer and use it in GitHub Desktop.
What is CoffeeScript?

CoffeeScript

CoffeeScriptはJavaScriptをRuby・Pythonに似たシンタックスで書けるようにする言語です。

手っ取り早く試す

文法・JavaScriptへの変換は公式ページから試せます。

インストールは以下の通り(Linux Mintの場合)。 coffeeコマンドが想定するnodeのコマンド名がaptで入るものと違っていたのでシンボリックリンクで作成しています。

sudo aptitude install -y nodejs npm
sudo ln -s /usr/bin/nodejs /usr/bin/node
sudo npm install -g coffee-script

# サンプルコードをダウンロード・コンパイルして表示
wget https://gist.github.com/doloopwhile/5426335/raw/814c6f364c8482843d68b220be14f14846fc0d14/fibbuzz.coffee
coffee -c -p fibbbuz.coffee

特徴

TypeScriptやJSXがJavaScriptに型指定などの新機能を追加するのと対照的に、 CoffeeScriptに新しい機能を追加したりはしません。

CoffeeScriptのコードはJavaScriptの悪いパーツ・落とし穴を回避し 短く簡潔に書くことができるようにします。

たとえば、JavaScriptの無名関数でfunctionという長いキーワードが必要ですが、 CoffeeScriptは=>で短く書けます。returnも、行末のセミコロンも不要です。

squares = [1, 2, 3].map (x) =>
  x * x

また、生成するJavaScriptもシンプルで、メンテやデバッグも容易です。

var squares,
  _this = this;

squares = [1, 2, 3].map(function(x) {
  return x * x;
});

入門記事

サンプルコード(FibBuzz)

fibbuzz.coffee

#!/usr/bin/env coffee
fizzbuzz = (x) =>
  if x % 15 == 0
    "fizzbuzz"
  else if x % 3 == 0
    "fizz"
  else if x % 5 == 0
    "buzz"
  else
    x

fibonacci_numbers = (max) =>
  [a, b] = [1, 2]
  ret = []
  while a <= max
    ret.push a
    [a, b] = [b, a + b]
  ret

for x in fibonacci_numbers(100)
  console.log(fizzbuzz(x))
#!/usr/bin/env coffee
fizzbuzz = (x) =>
if x % 15 == 0
"fizzbuzz"
else if x % 3 == 0
"fizz"
else if x % 5 == 0
"buzz"
else
x
fibonacci_numbers = (max) =>
[a, b] = [1, 2]
ret = []
while a <= max
ret.push a
[a, b] = [b, a + b]
ret
for x in fibonacci_numbers(100)
console.log(fizzbuzz(x))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment