javascriptでエクスクラメーションマーク(!)2つ

javascriptでエクスクラメーションマークを2つ使っているところを見かけました。

!!obj

これの意味は、objがundefinedでないとき、trueを返すというものらしいです。

undefinedというプリミティヴ値自体がJavaScript1.3から定義されるようになったものであり、

古いブラウザやMac+IE5なんかだと単なるif(obj)という式自体がエラーになってしまうらしいです。

【参考】

http://www.penpale.jp/blog/double_exclamation_mark.html

http://www5e.biglobe.ne.jp/~purest/javascript/zakki/niju.html