Heim  >  Artikel  >  Web-Frontend  >  Der Unterschied und die Verwendung von undefiniert und null, die leeren Raum in JavaScript darstellen

Der Unterschied und die Verwendung von undefiniert und null, die leeren Raum in JavaScript darstellen

黄舟
黄舟Original
2017-02-28 14:50:151902Durchsuche

Als ich anfing, JavaScript zu lernen

hatte ich das Gefühl, dass undefiniert ziemlich neu war
weil andere Sprachen es nicht hatten
und es nicht nur undefiniert hatte, sondern Es gab auch eine Null, was „leer“ bedeutet
Ich glaube, viele Schüler können den Unterschied zwischen undefiniert und null nicht erkennen
Heute werde ich den Unterschied zwischen undefiniert und null zusammenfassen, was in JavaScript „leer“ bedeutet

Ähnlich

Undefiniert und null sind beide JavaScript-Grundtypen in
und sie haben jeweils nur einen Typwert, der undefiniert und null ist und denselben Namen wie ihre Typen hat
Normalerweise gibt es wirklich keinen Differenz zwischen diesen beiden Werten

var foo = undefined;
var foo = null;

Und die Norm schreibt auch vor, dass

console.log(null == undefined) // true

(aber null !== undefined)

in a umgerechnet wird Boolescher Wert und ist falsch

if(!undefined){
    console.log(1);//1}if(!null){
    console.log(1);//1}

Unterschied

Aber tatsächlich gibt es einen Unterschied
Schauen wir uns zuerst diese Codezeilen an

console.log(undefined in window);// trueconsole.log(null in window);// false

Das ist der Unterschied
null ist ein Schlüsselwort in JavaScript
undefiniert ist eine spezielle Eigenschaft für Fenster (das gleiche wie NaN und Infinity)
Obwohl ES5 undefiniert zu einer schreibgeschützten Eigenschaft wird, gibt es immer noch einige unvernünftige Dinge , wie zum Beispiel dieses

function fn(){
    var undefined = 1;// 注意:前方高能
    console.log(undefined);// 1}
fn();

Sehen Sie, da undefiniert kein Schlüsselwort ist, können wir undefiniert in lokalen Variablen deklarieren (sprachlos)
Auch wenn Sie sich im strengen Modus befinden

function fn(){    "use strict";    var undefined = 1;
    console.log(undefined);// 1}
fn();

Wir dürfen keinen solch unverschämten Code schreiben

Es gibt auch einen Unterschied bei der Durchführung mathematischer Operationen

console.log(undefined + 1); //NaNconsole.log(null + 1); //1

undefiniert für jede Operation wird in NaN konvertiert
, während Null in 0 konvertiert wird

Geschichte

Es macht Sinn, dass JavaScript zwei Werte hat, die null darstellen
Brendan Eich, der Vater von js, hat es ursprünglich wie Java entworfen, nur mit null
Aber Er war der Ansicht, dass js zwei Arten von Grundwerten und Referenzwerten hat
Die Verwendung eines Objekts zur Darstellung des Seltsamen typeof null === 'object' und die Umwandlung von Null in die Zahl 0 führten dazu, dass viele Fehler schwer zu finden waren
Also entwarf er undefiniert

Verwendung

Laut js Das Design des Vaters
undefiniert bedeutet fehlender Wert
null bedeutet ein leeres Objekt
Aber wir verwenden es jetzt nicht so

Es kann so verstanden werden
undefiniert bedeutet, dass die Variable nicht initialisiert ist, nein. Der Wert
null bedeutet, dass die Variable initialisiert wurde und der Wert „Nullwert“ ist

undefiniert wird von js verwendet und null ist für uns
Ich weiß nicht, ob Sie diesen Satz verstehen können
Wenn Sie beispielsweise in diesen Fällen eine Variable deklarieren

  • var a;, die Engine weist ihr während der Vorkompilierung den Standardwert undefiniert zu

  • function a(){} Deklarationsfunktion, kein Rückgabewert, Standard gibt undefiniert zurück

  • var obj = {};obj.a; Beim Zugriff auf nicht vorhandene Objekteigenschaften ist der Standardwert undefiniert

  • var a = function(a){};a(); nicht angegeben Tatsächliche Parameter, Standardparameterwert undefiniert

  • ......

Dies ist die vom System vorgegebene Standardeinstellung, die von js verwendet wird >Und Was wir verwenden möchten, ist null
Zum Beispiel:

  • Erstellen Sie ein leeres Objekt var obj = Object.create(null);

  • Unbind event demo.onclick = null;

  • ......

Solange wir null verwenden möchten, ist es in einigen Fällen definitiv richtig, null zu verwenden. Es kann auch das Recycling von Browsermüll erleichtern Bezeichner und kann einen Wert zugewiesen werden; null ist ein spezieller Schlüssel. Wörter, keine Bezeichner, können nicht zugewiesen werden

undefiniert == null –> ; false

  • Undefiniert wird in eine Zahl umgewandelt und ist NaN, null wird in eine Zahl umgewandelt und ist 0

  • undefiniert und null wird in einen Booleschen Wert umgewandelt , beide sind falsch

  • undefiniert bedeutet keinen Wert, null bedeutet leeren Wert

  • Wir sollten null verwenden, um leer statt undefiniert zu bedeuten

  • Definieren Sie undefiniert niemals neu

  • Das Obige ist der Unterschied und die Verwendung von undefiniert und null in JavaScript. Für weitere verwandte Inhalte achten Sie bitte auf PHP-Chinesisch Website (www.php.cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn