Lassen Sie uns zunächst über den Unterschied zwischen Null und Undefined sprechen:
Führen Sie den Typ von deklarierter, aber nicht initialisierter und nicht deklarierter Variablen aus, beide geben "undefiniert" zurück.
Null bedeutet einen leeren Objektzeiger, und die TypeOF -Operation gibt "Objekt" zurück.
Im Allgemeinen wird der Wert einer Variablen nicht explizit auf undefiniert, sondern im Gegenteil, für die Variable, die das Objekt speichern soll, sollte die Variable explizit erlaubt werden, den Nullwert zu speichern.
var bj; alarm (bj); // "undefined" bj = null; alert (typeof bj); // "Objekt" -Alert (bj == null); // Trubj = {}; alert (bj == null); //FALSCHDie folgenden zwei Funktionen wurden mir von Senior Brother Deng gegeben, danke.
/** Erkennen Sie, ob das Objekt ein leeres Objekt ist (ohne lesbare Eigenschaften). * Die Methode erkennt sowohl die Eigenschaften des Objekts selbst als auch die Eigenschaften, die aus dem Prototyp geerbt wurden (so dass es nicht HasownProperty gemacht hat). */function isEmpty (obj) {für (var name in obj) {return false;} return true;};Ist das hier erwähnte leere Objekt {} oder NULL? Ich habe einen Testfall geschrieben.
var a = {}; A.Name = 'RealWall'; console.log (isempty (a)); //falseconsole.log (isempty ({})); //trueconsole.log(isemppty(null)); // true // Beachten Sie, dass es keinen Syntaxfehler gibt, wenn der Parameter null ist. Das heißt, obwohl Sie dem Null -Null -Zeiger Attribute nicht hinzufügen können, können Sie die in Anweisung verwenden, um festzustellen, ob das Objekt ein leeres Objekt ist (enthält keine lesbaren Attribute). * Die Methode erkennt nur die Eigenschaften des Objekts selbst und erkennt keine vom Prototyp geerbten Eigenschaften. */function isownEmpty (obj) {für (var name in obj) {if (obj.hasownProperty (name)) {return false;}} return true;};Der Unterschied zwischen {} und Null:
Dieses Ding ist sehr wichtig.
var a = {}; var b = null; A.Name = 'RealWall'; B.Name = 'Jim'; // Ein Fehler wird hier gemeldet. B ist ein Nullzeiger für ein Bild, und Attribute können nicht wie gewöhnliche Objekte direkt hinzugefügt werden. b = a; B.Name = 'Jim'; // A und B zeigen zu diesem Zeitpunkt auf dasselbe Objekt. A.Name, B.Name sind alle "Jam"