!!って何?
prototype.jsを少しずつ読み解く。自分用メモ。
var Prototype = { Version: '1.6.0.1', Browser: { IE: !!(window.attachEvent && !window.opera), Opera: !!window.opera, WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1, MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/) },
はい。ここまででわからないのは5・6行目に現れる!!
否定の否定?、つまり元のままじゃん。意味あるの?
しばし考えて思ったのが、これは!!に続くものをtrueもしくはfalseに変換するためにあるっぽいな。
例えばnullは条件の中では偽として扱われるが、そのままnullを使用すると当たり前だがnullである。これをfalseに変換したい場合に使うんじゃないかな。
var foo = !!null; foo; //=> false