title: Any specific use of double negation (!!) before new?
body: <p>I understand the basic concept of double-negation- conversion to bool - this is a question about the specific use before new.</p>
  
  <p>I was looking for a way to detect blob support and came across this check on <a href="https://github.com/Modernizr/Modernizr/issues/580" rel="nofollow">this page</a>:</p>
  
  <blockquote>
    <p>try {   !!new Blob(); } catch (e) {   return false; }</p>
  </blockquote>
  
  <p>I created an example below to demonstrate the check always failing.</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>window.onload=function()
  {
    var inputBox = document.getElementById('inputBox');
    try {
      !!new Foo15514();
      inputBox.value='supported';
    } catch (e) {
      inputBox.value='not supported';    
    }
  }</code></pre>
  <pre class="snippet-code-html lang-html prettyprint-override"><code>&lt;input id='inputBox' type=text/&gt;</code></pre>
  </div>
  </div>
  </p>
  
  <p>Without getting into whether this is a good approach for blob detection or not, the question I have is what is the point of the <code>!!</code> in this case? As far as I can tell it is superfluous, but I thought I would ask in case there is something I am missing.</p>
  
  <p><code>!!new Foo15514()</code>, <code>new Foo15514()</code>, <code>var j = new Foo15514()</code> all have the same result. </p>
  
  <p><strong>Update</strong>
  Just to get the ball rolling - one thought I had is that this was done to force the javascript engine to evaluate this rather than skipping it since it has no effect, which seems like a bad approach if that was the case. </p>