JavaScriptの誤った値
false 
- ゼロ
Number:種類0とも-0、0.0と六角フォーム0x0(感謝のRBT) 
BigIntタイプのゼロ:0nおよび-0n(2020の新機能、ありがとうGetMeARemoteJob) 
""、''および``-長さが0の文字列 
null 
undefined 
NaN 
document.all (HTMLブラウザーのみ) 
- これは変なものです。
document.allで、falseyオブジェクトであるtypeofとしてundefined。これは、IE11の前にIEでのMicrosoft-専有関数であった、とに追加された「JavaScriptの仕様の故意の侵害」としてHTMLの仕様、IEのために書かれたサイトは、例えば、アクセスしようとしてでブレークしませんようにdocument.all.something。かつてはif (document.all)、条件付きコメントの前にIEを検出するための一般的な方法であったため、これは誤りです。参照してくださいなぜdocument.allのfalsyのですか?詳細については 
 
「Falsey」は、JavaScriptの内部ToBoolean関数がを返すことを意味しますfalse。 ToBoolean根底にある!value、value ? ... : ...;とif (value)。これが公式仕様(2020ワーキングドラフト)です(1997年の最初のECMAscript仕様以降の唯一の変更は、ES6のシンボルの追加です。これは常に真実でありBigInt、上記のとおりです)。

==(ゆるい平等)との比較
根本的な違いにより、を使用して混乱を招く可能性のある、との偽の値の緩やかな比較==について話すことは価値ToNumber()があります。彼らは効果的に3つのグループを形成します:
false, 0, -0, "", '' すべてが互いに一致する == 
- たとえば
false == ""、'' == 0したがって4/2 - 2 == 'some string'.slice(11);   
 
null, undefined との一致 ==
- 例えば
null == undefinedしかし、undefined != false 
- また、returnはオブジェクトではありませんが、これは互換性を維持するために修正されなかった長年のバグ/癖であることにも言及する価値があり
typeof nullます。それは真のオブジェクトではなく、オブジェクトは真実です(JavascriptがHTMLで実装されている場合のその「意図しない違反」を除いて)'object'nulldocument.all 
 
NaN で、何も一致していない==か、===いなくても、それ自体、
- 例えば
NaN != NaN、NaN !== NaN、NaN != false、NaN != null 
 
「厳密な平等」(===)の場合、そのようなグループはありません。のみfalse === false。
これが、多くの開発者や多くのスタイルガイド(たとえば、standardjs)が好ん===で使用することがほとんどない理由の1つです==。
実際の真実の価値観 == false
「真実」とは、JavaScriptの内部ToBoolean関数がを返すことを意味しますtrue。Javascriptをの癖はを意識するように(と別の良い理由が好む===以上==):それは可能である値は(truthyするためにToBoolean戻ってtrueも)、しかし== false。
あなたif (value && value == false) alert('Huh?')は、起こり得ない論理的な不可能性であると考えるかもしれませんが、それは、
"0"そして'0'-それらは空ではない文字列であり、真実ですが、Javascriptは==数値を同等の文字列と一致させます(例:)42 == "42"。以来0 == false、場合   "0" == 0、"0" == false。 
new Number(0)そしてnew Boolean(false)-それらは真実であるオブジェクトですが==、その値を見て、それは== falseです。 
0 .toExponential(); -に相当する数値を持つオブジェクト 0 
- 真実である型にラップされた、偽の等しい値を与える同様の構造
 
[]、[[]]および[0](おかげでcloudfeetのためのJavaScript平等表リンク) 
さらに真実な値
これらはほんの一部の値であり、一部の人々は誤っていると予想するかもしれませんが、実際には真実です。
true、1、"1"および[1]リターンtrueと相互に比較==。