LoginSignup
6
5

More than 5 years have passed since last update.

javascriptをcoffeescriptに書き換えるときは「==」演算子に気をつけるんだ!

Posted at

要約

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で文字列と数値を比較するときは、

parseIntparseFloatを使う。

123 is parseInt("123")     // true
1.23 is parseFloat("1.23") // true
6
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5