<< ポイント(1)-(3)へ<<

 CoffeScriptを3時間で理解するための10のポイントのうち、ポイント4と5を解説します。ポイント4は「演算子が使いやすくなった」こと、ポイント5は「条件分岐が書きやすくなった」ことです。

POINT4 演算子が使いやすくなった

★「==」演算子は「===」演算子にコンパイルされる
★演算子のエイリアス(別名)を多数用意
★変数有無のチェックをシンプル、かつ、確実に行える
★関数やプロパティ、メソッドを安全に呼び出せる
★連続する数値を表せる範囲演算子を追加
★比較演算子だけで数値範囲を表現できる

「==」演算子のあいまいさを排除する

 JavaScriptにおける等値演算子「==」は、演算子の右辺と左辺の値を比較し、等しいときにtrue(真)、等しくないときにfalse(偽)になります。右辺と左辺が文字列と数値のときは、数値を文字列に置き換えてから比較します。

 「==」はその“親切さ”ゆえになかなか厄介な代物です。例えばJavaScriptでは、次の結果はいずれもtrueとなります。
'1.414E3' == 1414
'0x10' == 16

 1.414E3は指数表現、0x10は16進数表現であると解釈されてしまうのです。もっとも、なんでも都合よく解釈してくれるかというと、必ずしもそうではありません。例えば、次はfalseです。
'010' == 8

 「010」は数値リテラルであれば8進数表現ですが、そのまま10進数表現の10と見なされるわけです。

 こうしたあいまいさはバグの原因になります。JavaScriptでは「==」演算子ではなく、値とデータ型の両方を比較する厳密等価演算子「===」を利用すべきです。

 CoffeeScriptでは、この考えがさらに徹底されており、「==」演算子は無条件に「===」演算子に変換されます(リスト16(上はCoffeeScript、下はコンパイル済みのJavaScript))。JavaScriptの「==」演算子に相当する演算子は、CoffeeScriptにはありません。

リスト16●「==」演算子は「===」にコンパイルされる
リスト16●「==」演算子は「===」にコンパイルされる

CoffeeScriptのエイリアス
 コンパイル時に変換されるにしても「==」演算子を使うのは気持ち悪い、という人のために、CoffeeScriptはエイリアス(別名)として、is演算子を用意しています。次のコードは同じ意味です。
x == 1
x is 1

 CoffeeScriptは他に、表2のようなエイリアスを用意しています。好みに応じて使い分けると良いでしょう。

表2●CoffeeScriptの主なエイリアス
表2●CoffeeScriptの主なエイリアス