Heim > Artikel > Web-Frontend > Detaillierte Erläuterung des Unterschieds zwischen null und undefinierter Verwendung in JavaScript
Beurteile undefiniert und null:
<span style="font-size: small;">var tmp = undefined; if (tmp== undefined) { alert("null or undefined"); } </span>
<span style="font-size: small;">var tmp = undefined; if (tmp== null) { alert("null or undefined"); }</span>
Erklärung: null==undefiniert
Aber:
null !== undefiniert
Also, was sind die beiden ? Was ist der Unterschied?
null
Dies ist ein Objekt, aber es ist leer. Da es sich um ein Objekt handelt, gibt typeof null „object“ zurück.
null ist ein für JavaScript reserviertes Schlüsselwort. Wenn
null an numerischen Operationen teilnimmt, wird sein Wert automatisch in 0 konvertiert. Daher erhält der folgende Ausdruck nach der Berechnung den korrekten Wert:
Ausdruck: 123 + null Ergebniswert: 123
Ausdruck: 123 * Null-Ergebniswert: 0
undefiniert
undefiniert ist eine spezielle Eigenschaft des globalen Objekts (Fensters) und sein Wert ist undefiniert. Aber typeof undefiniert gibt „undefiniert“ zurück.
Obwohl undefiniert eine besondere Bedeutung hat, ist es tatsächlich eine Eigenschaft und eine Eigenschaft des globalen Objekts (Fensters).
alert('undefined' in window);//输出:true var anObj = {}; alert('undefined' in anObj); //输出:false
Daraus ist ersichtlich, dass undefiniert ein Attribut des Fensterobjekts ist, aber kein Attribut des anObj-Objekts.
Hinweis: Obwohl undefiniert ein Attribut mit besonderer Bedeutung ist, ist es kein reserviertes Schlüsselwort in JavaScript.
Wenn undefiniert an einer numerischen Berechnung teilnimmt, muss das Ergebnis NaN sein.
NaN ist übrigens eine weitere besondere Eigenschaft des globalen Objekts (Fensters), ebenso wie Infinity. Keines dieser speziellen Attribute sind für JavaScript reservierte Schlüsselwörter!
Verbesserung der undefinierten Leistung
Wenn wir undefinierte Werte im Programm verwenden, verwenden wir tatsächlich die undefinierte Eigenschaft des Fensterobjekts.
Ähnlich, wenn wir eine Variable definieren, ihr aber keinen Anfangswert zuweisen, zum Beispiel:
var aValue; Wird als Vorkompilierungsreferenz bezeichnet.
Wenn wir also eine Variable oder einen Wert mit undefiniert vergleichen, wird sie tatsächlich mit der undefinierten Eigenschaft des Fensterobjekts verglichen. Während dieses Vergleichsprozesses sucht JavaScript nach der Eigenschaft „undefiniert“ des Fensterobjekts und vergleicht dann die Referenzzeiger der beiden Operanden, um festzustellen, ob sie gleich sind.
Da das Fensterobjekt viele Attributwerte hat, dauert es einige Zeit, bei jedem Vergleich mit undefiniert nach dem undefinierten Attribut des Fensterobjekts zu suchen. Dies kann ein Leistungsproblem bei Funktionen sein, die häufige Vergleiche mit undefiniert erfordern.
Aus diesem Grund definieren viele Front-End-JS-Frameworks oft selbst eine lokale undefinierte Variable!
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Unterschieds zwischen null und undefinierter Verwendung in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!