|
let data_int = 1;JavaScriptに限らず、動的型付け言語はだいたい同じ問題を持っているが、この言語仕様はバグの温床でしかない。
let data_str = "1";
if (data_int == data_str) { ... }
let data = undefined;また上述のように空文字 "" も偽値(false)であるため、次の比較も成立しtrueとなる。
if (data == null) { ... }
let str = "";こういった想定しない問題を起こすが、厳密等価演算子を用いるとこれら完全に一致していないものはfalseを返す。
if (str == false) { ... }
val a = Integer(10)aとbは同じ10を持つ変数だが互いに異なるオブジェクトである。この時Kotlinでは、a == b は成立(true)するが、a === b は不成立(false)になる。二つの演算子はこのように使い分けることができる。
val b = Integer(10)