もうちょっとしっくりきて憶えやすい「==」ではなく「===」を使う理由。(正確には等値演算子(==)を使わない理由って言った方がいいのかな。)
JavaScript の比較演算子 == と === の違い | TM Life
どっちを使うべき?
どうしても等価演算子を使うとあいまいな比較になってしまいます. 1 かどうかを比較したいのに ’1′ の時も true になってしまうと困りますよね?
こういったあいまいさはバグの温床になりかねないので, すべて厳密等価演算子を使うべきだと思います.
参考書籍
- JavaScript: The Good Parts -「良いパーツ」によるベストプラクティス( Douglas Crockford (著) 水野 貴明 (翻訳)オライリー・ジャパン、2008年、ISBN978-4-84311-391-3)
数学での推移律。
a = b かつ b = cならば a = c
a = b & b = c => a = c
等値演算子(==)でどうなるかを確認。
a = ''(空文字)、b = 0(数値)、c = '0'(文字列)の場合
var a = ''; var b = 0; var c = '0'; var result = "a == b: " + (a == b) + ", b == c: " + (b == c) + ", a == c: " + (a == c) + "\n" $('#pre0').text(result);
等値演算子だと推移律が成り立たない!(型を強制変換するから)
aとbはイコールかつbとcはイコール、なのにaとcはイコールじゃないって。。
ということで等値演算子(==)は使わず、すべて同値演算子(===)を使った方がいい。
ちなみに同値演算子を使った場合
var a = ''; var b = 0; var c = '0'; var result = "a === b: " + (a === b) + ", b === c: " + (b === c) + ", a === c: " + (a === c) + "\n" $('#pre1').text(result);
0 コメント:
コメントを投稿