When is (true == x) === !!x false?
<p>JavaScript has different equality <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Comparison_Operators" rel="nofollow">comparison operators</a></p>

<ul>
<li>Equal <code>==</code></li>
<li>Strict equal <code>===</code></li>
</ul>

<p>It also has a <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Logical_Operators#Logical_NOT_%28!%29" rel="nofollow">logical NOT</a> <code>!</code> and I've tended to think of using a double logical NOT, <code>!!x</code>, as basically the same as <code>true == x</code>.</p>

<p>However <strong>I know this is not always the case</strong>, e.g. <code>x = []</code> because <code>[]</code> is <em>truthy</em> for <code>!</code> but <em>falsy</em> for <code>==</code>.</p>

<p>So, for which <code>x</code>s would <code>(true == x) === !!x</code> give false? Alternatively, what is <em>falsy</em> by <code>==</code> but not <code>!!</code> (or vice versa)?</p>
