null==unknown と null!==unknown は以前にも見たことがあるような気がしますが、気にしたことはありませんでした。
最近、他人のプログラムのソースコードを見ていたら、随所に if(x!=unknown&x!=null&x!="") のような判定があり、非常に冗長な記述になっていると感じました。 if(x){} は、条件判定では null、unknown、"" が実際には false であるため、なぜこれほど冗長になるのでしょうか。 (ただし、x==0 も正当な値である場合、if(x){} を使用して条件判断を行うことはできないことに注意してください。)
この冗長性を証明するために、私は特別に次のことも行いました。次のテスト:
var a;
alert(x)
if(x==null){
alert('failed')
}
ここで、x は初期化されていない変数、つまり未定義です。
上記のコードを実行すると、「未定義」と「失敗」のポップアップが連続して表示され、x==null が修飾されていることを示します。
alert(null==unknown) を直接実行すると、実際に true が返されることがわかります。
これはすべて、x==null||x==unknown または x!=null&&x!=unknown などの記述が完全に冗長であることを示しています。
一般的には、null か未定義かを判断するだけで済みます。