要約
javascriptでのa == bと、coffeescriptでのa == bでは意味が違う。
coffeescriptのa == bはコンパイルされると、javascriptのa === bになる、というお話。
javascriptでの「==」と「===」
「===」演算子は、値とデータ型の両方が一致するときにtrueを返す。
一方、「==」演算子は、数値と文字列の比較でも察して比較してくれる。
123 == 123          // true
123 === 123         // true
123 == "123"        // true
123 === "123"       // false
123 == "0x7b"       // true
123 === "0x7b"      // false
一見いい感じに見える「==」だけど、8進数(0始まり)には弱い
123 == 0173         // true
123 == "0173"       // false(10進数の173として解釈される)
coffeescriptでの「==」
「==」演算子は、コンパイルされるとjavascriptの「===」演算子になる。
javascriptで言うところの「==」演算子に相当するものはない。
123 == 123          // true
123 == "123"        // false
javascriptと挙動が違うのが気持ち悪いという人がいるからか、
coffeescriptには「==」演算子と同等の「is」演算子がある
123 is 123          // true
123 is "123"        // false
coffeescirptで文字列と数値を比較するときは、
parseIntやparseFloatを使う。
123 is parseInt("123")     // true
1.23 is parseFloat("1.23") // true