要約
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