node.jsアプリケーションで作業しているときに、私のSublimeエディタにLinterをインストールしました。それがキャッチしたことの1つは、オブジェクトをnullと比較するために私は常に使用すべきです(私は通常!=を使用します)。Javascript:nullと比較する - !== vs!=
だから私はそれを変更しました...しかし、それから!==が機能していないことに気付きました。
私はこのシナリオを持っている:!
var x = null;
if (x !== null)
console.log('x is not equal to null');
私が使用する==コンソールが、それは明らかに真実ではなかったにもかかわらず、その行を印刷。私はそれを元に戻しました!=それは正常に動作しました。
だから私の質問は、なぜリンターを使用するように私に言っている、ある!==それは、私はそれがやりたいしない場合は...
私は何かが欠けています知っています。 [OK]を
UPDATE 、私が当初考えていたよりも少し複雑になる場合もございます。私の実際のコードでは、node.js GLOBALオブジェクトで!==を使用していました。
console.log('Global User: ' + GLOBAL.User);
if (GLOBAL.User != null)
{
console.log('User is not null');
}
GLOBAL.Userがnullであっても、コンソールのラインが印刷
...はおそらく、このオブジェクトは特別なのですか?
更新のコメントを読んと私のコードを見た後、私はそれを学んだので、2
OK!オブジェクトがnullではなく、定義されていない場合==は問題を抱えていることができます(この記事を参照:Why is null an object and what's the difference between null and undefined?)。
私の場合、グローバル変数は、このメソッドがいつ呼び出されるか、定義されていないか、ヌルか、データがいっぱいかによって異なります。私は戻って自分のコードを更新して決して定義されないようにして、!==が一貫して動作するようにします。
ありがとうございました!
おかげで、 デビッド
ある
もっと簡単です(http://jsfiddle.net/zA4Du/) – 0x499602D2
あなたの実験を繰り返すことができません。あなたのコードを実行すると、私のx === null。 null == undefinedがtrueであることに注意してください。 null ===未定義はfalseです。 JavaScriptは楽しいです! –
も参照してください。http://stackoverflow.com/questions/801032/why-is-null-an-object-and-whats-the-difference-compared-to-undefined – mrk