Facebook Twitter Google Maps RSS
Home 未分類 意外に知らない!?JavaScriptの罠
formats

意外に知らない!?JavaScriptの罠

 

水曜日担当のよっしーです。

 

先週の記事でもjsが大人気!ということを書きましたが、

やはり実際のところ、利用機会が多いです。

 

利用機会の多いjsですが、最近まで見たことも書いたこともなかったので

他言語との違いに戸惑っています。

というわけで、本日はjsについてハマった内容です。

比較演算子の罠

jsは変数の型宣言を行わないタイプの言語なので、

型の異なる値を比較する時は注意が必要です。

var foo = ’0′;

>> foo == 0;       // true

>> foo === 0;    // false 

 

等価演算子(==)では値さえ一致していればtrueになりますし、

厳密等価演算子(===)では値に加え型が一致していればtureとなります。

 

さてさて、ここまではよくある内容ですね。

それでは以下の場合はどうなるでしょうか?

var bar = ’0′;

>>bar == ”;      //

>>bar === ”;    //

 

PHP的に見れば①、②共にfalseだと思いました。しかし、結果は・・・

①・・・true

②・・・false

 

という結果になります(バグが発生して小一時間悩みました)

jsでは0と空文字列を比較しても一致してしまうようです。

 

他にも0を比較した場合、以下のようになるようです。

var baz = ’0′;

baz == false;            // true

baz == null;              // false

baz == undefined;    // false

 

 

型がわかっているならば、できるだけ厳密等価演算子を使って比較するか、

正規表現を使って値を調べるのがバグ解消への近道のような気がします。

 

以上、水曜日担当よっしーでした。

One Response

  1. kei

    やべぃ!知らんかった!!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code lang=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" extra="">