システム開発ブログ

JavaScriptの暗黙の型変換に注意しよう

小原

小原 (2011年9月30日 22:41)
産業システム部

以下のJavaScriptの関数をご覧下さい。

  function test(){
    var a = 0;
    if(a == ''){   // ...(※1)
      // 処理①
      alert('処理①');
    }else{
      // 処理②
      alert('処理②');
    }
  }

上記関数を呼び出した場合、
一見、処理②の処理が実行されるように思えますが...、
実際は、処理①の処理が実行されることになります。
(IE8、Safari5 にて確認)


比較演算子『==』『!=』は、
基本的にnumber型として扱われます。

そのため、(※1)の部分で値を比較した際に
''が暗黙の型変換により、0として扱われるため、
処理①が実行されることとなります。(怖い...怖い...)


そこで、JavaScriptでの値の比較を行う場合は、
比較演算子『==』『!=』ではなく、
『===』『!==』を使用するのが安全です。

後者の比較演算子であれば、型を意識した比較を行うため、
(※1)の比較演算子を『===』に変更した状態で、
上記関数を呼び出した場合、
処理②が実行されることになります。


皆さん、暗黙の型変換には注意しましょう。

システムのトラブル解決を承ります。すぐにシステムリフォームを体験できますシステム診断・システムリフォームのお申し込みはこちらから。

システム開発ブログ

Twitterでilovex_officialをフォローしてください

最近の記事

カテゴリー

部署

月別アーカイブ

以前の部署別ブログ

ページのトップ