CoffeeScript

CoffeeScriptで/*@cc_on@*/

条件付きコメントを使えばいいという話でもありますが、ここでは、ちょっとした時に便利なJavaScriptのIE限定条件付きコンパイル/*@cc_on .. @*/をCoffeeScriptで使う方法を検討してみます。といっても大層な話ではなくEmbedded JavaScriptを使うだけです*1…

Node.jsのmoduleとexports、そしてCoffeeScript

ここしばらく、Node.jsを使った開発で忙しくて、ようやく一段落つきました。ということで随分とNodeを使ってきたつもりだったのですが、肝心のexportsの辺りの理解が浅かったことに気づいたので、少しまとめます。 exportsとmodule.exports exportsとmodule.…

CoffeeScriptにおけるarguments.callee的な再帰の考察

題材として、以下のフィボナッチ数の計算関数を利用します。効率が悪いのはご愛嬌。 fib = (n) -> return 1 if n is 1 or n is 2 (fib n-1) + (fib n-2) alert fib 10 ここで「fib(10)の結果を取得したいが、これ以上fibを使わないため、出来ればfibを消すか…

CoffeeScriptにおけるdo while

CoffeeScriptではdo while相当が無いのかー、と少しがっかりしたのですが、代案がstackoverflow先生に書かれていたのでメモしておきます。ちなみに、普通に無限ループとbreakの組み合わせで、ごくごく当たり前なことなのですが、何故か思いつきませんでした…

process.nextTickとはなんぞ

公式マニュアルのprocessを眺めていたらprocess.nextTickというのが出てきました。なんだかとても大事らしいです。マニュアルによればコレは、 イベントループの次以降のループでコールバックを呼び出します。 これは setTimeout(fn, 0) の単純なエイリアス…

CoffeeScriptでUnderscore.jsと戯れる

CoffeeScriptとUnderscore.jsの組み合わせで関数型言語のようなリスト主体のプログラミングをすることができます。せっかくなので_.mixinで_オブジェクトを拡張してみます。 keysとvaluesからObjectを作成する_.pairs Underscore.jsには、Objectから(1)キー…

CoffeeScriptで継承出来るようなJavaScriptのクラスの書き方

意外と根が深すぎて、ビビりました。数時間を費やしてしまいました。 環境 Google Chrome 20.0.1132.57 CoffeeScript 1.3.3 結論 まず一番重要なのは、「constructorではオブジェクトをreturnすべきでない」ということです。この記事を書いてからしばらく立…