2013-05-10 9 views
30

Wenn am oberen Rand der JavaScript-Funktion Variablen deklariert werden, empfiehlt es sich, sie auf null zu setzen oder als undefined zu belassen? Eine andere Möglichkeit zu fragen, welche Umstände für jede der folgenden Optionen erforderlich sind,Setzen Sie JavaScript-Variable = null, oder nicht definiert?

Option A:

var a = null, 
    b = null; 

Option B:

var a, 
    b; 
+2

Ich werde mit Option 'b' gehen –

+3

@ Mr.Alien - einverstanden. Es gibt keinen Grund, die '= null'-Version zu verwenden, außer es ist tatsächlich wichtig, dass die Variablenwerte 'null' statt 'undefiniert' sind. –

+0

Eigentlich kann 'var a, b;' nicht immer * es 'undefined' * lassen. In früheren IE-Versionen müssten Sie diesen Teil des Codes in 'var a = undefiniert, b = undefined;' ändern, sonst würde Ihr Code beim Versuch, darauf zuzugreifen, einen Fehler erzeugen (selbst wenn Sie nur einfach nachsehen wollten, ob es hat einen gewissen Wert mit 'if (a && b)' zum Beispiel). In diesem Fall unterscheidet sich eine nicht gesetzte Variable von "undefiniert". – falsarella

Antwort

13

ich sie als nicht definiert erklären, wenn ich keinen Wert zuweisen, da sie schließlich nicht definiert sind.

+5

Dann ist es notwendig, undefiniert zu "zuweisen", weil, wie Sie sagten, sie doch undefiniert sind? – VivekDev

+1

Wie bereits erwähnt, ist es nicht notwendig, undefiniert zu deklarieren. Wenn Sie jedoch undefined deklarieren, wissen Sie beim Testen dieses Wertes nicht, ob Sie es absichtlich gesetzt haben oder ob es nie wirklich gesetzt wurde. Aus diesem Grund bevorzuge ich in Fällen, in denen kein Wert vorhanden ist, Null. –

0

Die kurze Antwort ist, dass es keinen Unterschied macht, weil es durch den Stapel läuft. Es gibt jedoch einige Situationen, in denen es besser wäre, Variablen außerhalb des Geltungsbereichs zu behandeln.

+4

Es tut mir leid, aber diese Antwort macht überhaupt keinen Sinn. Es hat nichts mit irgendeinem Stapel zu tun, und nichts mit dem Umfang zu tun. Eine Version setzt die Variablenwerte auf "null" und die andere setzt sie auf "undefiniert". Das ist der einzige Unterschied; es gibt keine Verbindung zu irgendeinem der Dinge, die du erwähnt hast. –

+0

@MichaelGeary ja, aber es klingt klug –

1

Die einzige Zeit, die Sie brauchen, um es einrichten (oder nicht), wenn Sie explizit müssen prüfen, ob eine Variable a genau null oder undefined eingestellt ist.

if(a === null) { 

} 

... ist nicht das gleiche wie:

if(a === undefined) { 

} 

Das heißt, a == null && a == undefined wird true zurück.

Fiddle

+0

In diesem Fall auf Null zu überprüfen ist nicht gut. Es verstößt gegen die "vermeiden Null-Vergleiche" Best Practice in Javascript. Sie sollten nur für das DOM-Objekt mit null vergleichen (http://my.safaribooksonline.com/book/programming/javascript/9781449328092/idot-programming-practices/id2779483) –

+0

Ich stimme nicht zu; Alles, was wir tun wollen, ist zu sehen, ob eine Variable tatsächlich 'null' oder 'undefiniert' ist - was absolut gültige Überprüfungen sind. Ich stimme zu, dass es in Ihrem zitierten Beispiel eine schlechte Idee ist, nach 'null' zu suchen, aber das ist nur ein Fall :) – jterry

30

Es hängt vom Kontext ab.

  • "undefiniert" bedeutet, dass dieser Wert nicht existiert. typeof gibt "undefined" zurück

  • "Null" bedeutet, dass dieser Wert mit einem leeren Wert vorhanden ist. Wenn Sie typeof verwenden, um nach "null" zu testen, werden Sie feststellen, dass es sich um ein Objekt handelt. Anderenfalls, wenn Sie "Null" -Wert auf Backend-Server wie asp.net mvc serialisieren, erhält der Server "null", aber wenn Sie "undefiniert" serialisieren, ist es unwahrscheinlich, dass der Server einen Wert erhält.

  • 9

    Im Allgemeinen verwende ich Null für Werte, von denen ich weiß, dass sie einen "Null" -Zustand haben können; zum Beispiel

    if(jane.isManager == false){ 
        jane.employees = null 
    } 
    

    Andernfalls, wenn seine eine Variable oder Funktion, die noch nicht definiert ist (und damit ist nicht „benutzbar“ im Moment), sondern soll Setup später sein, ich kann es nicht definiert in der Regel verlassen.

    -12

    Sie können ''; zu deklarieren NULL Variable in Javascript verwenden

    +8

    Eine leere Zeichenfolge und' null' sind sehr unterschiedliche Dinge. –

    1

    Im Allgemeinen sprechen ich null definiert einen Menschen den Wert und undefiniert gesetzt zeigen keine Einstellung, um anzuzeigen, stattgefunden hat.

    1

    Normalerweise setze ich es auf das, was ich erwarte, dass es von der Funktion zurückgegeben wird.

    Wenn eine Zeichenfolge, als ich es auf eine leere Zeichenfolge festlegen = '', gleich für Objekt = {} und Array = [], Ganzzahlen = 0.

    mit dieser Methode spart mir die Notwendigkeit, auf Null/undefined zu überprüfen. Meine Funktion wird wissen, wie man String/Array/Objekt unabhängig vom Ergebnis behandelt.

    Verwandte Themen