<< ポイント(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の主なエイリアス

この先は会員の登録が必要です。有料会員(月額プラン)は登録月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら