Ok, also habe ich Linter auf meinem Sublime Editor installiert, während ich an meiner node.js App arbeite. Eines der Dinge, die es gefangen hat, besagt, dass ich immer! == verwenden sollte, um ein Objekt mit null zu vergleichen (normalerweise verwende ich! =).Javascript: Im Vergleich zu null -! == vs! =
Also änderte ich es ... aber dann bemerkte ich, dass das! == nicht funktionierte.
Ich habe dieses Szenario:
var x = null;
if (x !== null)
console.log('x is not equal to null');
Wenn ich die == die diese Zeile gedruckt Konsole, obwohl es offensichtlich war nicht wahr!. Als ich es wieder auf "!" Stellte, verhält es sich normal.
Also meine Frage ist, warum ist mir Linter sagen zu verwenden! == wenn es nicht tun, was ich will es ...
Ich weiß, ich bin etwas fehlt.
UPDATE Ok, so dass es ein bisschen mehr sein kann komplizierter, als ich ursprünglich dachte. In meinem echten Code benutzte ich! == mit dem node.js GLOBAL-Objekt.
console.log('Global User: ' + GLOBAL.User);
if (GLOBAL.User != null)
{
console.log('User is not null');
}
Die Zeilenkonsole druckt, selbst wenn GLOBAL.User null ist ...
Vielleicht ist dieses Objekt besonders?
Update 2
Ok, so dass nach dem Lesen der Kommentare durch und Blick auf mein Code, ich gelernt habe! == Probleme haben kann, wenn das Objekt nicht definiert ist und nicht null (siehe diesen Beitrag: Why is null an object and what's the difference between null and undefined?).
In meinem Fall könnte meine globale Variable je nachdem, wann diese Methode aufgerufen wird, undefined, null oder voll von Daten sein. Ich werde zurückgehen und meinen Code aktualisieren, so dass er nie undefiniert ist und dann! == wird konsequent funktionieren.
Danke für die Hilfe!
Danke, David
ist [Works für mich.] (Http://jsfiddle.net/zA4Du/) – 0x499602D2
Können Sie Ihr Experiment wiederholen. Mein x === null, wenn ich Ihren Code mache. Beachten Sie, dass null == undefined ist wahr. null === undefined ist falsch. JavaScript macht Spaß! –
Siehe auch http://stackoverflow.com/questions/801032/why-is-null-an-object-and-whats-the-difference-compared-to-undefined – mrk