小原 (2011年9月30日 22:41) 産業システム部
function test(){ var a = 0; if(a == ''){ // ...(※1) // 処理① alert('処理①'); }else{ // 処理② alert('処理②'); } }
JavaScriptの暗黙の型変換に注意しよう
小原 (2011年9月30日 22:41)
産業システム部
function test(){ var a = 0; if(a == ''){ // ...(※1) // 処理① alert('処理①'); }else{ // 処理② alert('処理②'); } }上記関数を呼び出した場合、一見、処理②の処理が実行されるように思えますが...、
実際は、処理①の処理が実行されることになります。
(IE8、Safari5 にて確認)
比較演算子『==』『!=』は、
基本的にnumber型として扱われます。
そのため、(※1)の部分で値を比較した際に
''が暗黙の型変換により、0として扱われるため、
処理①が実行されることとなります。(怖い...怖い...)
そこで、JavaScriptでの値の比較を行う場合は、
比較演算子『==』『!=』ではなく、
『===』『!==』を使用するのが安全です。
後者の比較演算子であれば、型を意識した比較を行うため、
(※1)の比較演算子を『===』に変更した状態で、
上記関数を呼び出した場合、
処理②が実行されることになります。
皆さん、暗黙の型変換には注意しましょう。