よく見かける落とし穴

しばしば、JavaScriptのコードで、

 if (!!sie.p) {
   alert("pプロパティを発見");
 }

というようなコードを書いていますが、正しくは、

if (!!sie.p || sie.p === 0) {
alert("pプロパティを発見");
}

 if ("p" in sie) {
   alert("pプロパティを発見");
 }


となります。pプロパティにもし、Number型の0や空文字列の""が入っていますと、IEにおいては、「!!」はfalseを返すわけです。私の失敗談として、ここにメモしておきます。

追記(2010年10月14日)

コメントでin演算子を使った方がよいとご指摘がありましたので、修正しました。ご指摘下さったos0xさん、ありがとうございました。