Javascript: Warum mit null vergleichen?

8

Ein Open-Source-JavaScript-Projekt, an dem ich arbeite, enthält Code:

%Vor%

Ein Mitwirkender möchte es in

ändern %Vor%

color ist eine Zeichenfolge var. Nur eine Zeichenfolge mit mehr als 0 Zeichen sollte verwendet werden, um die Farbe explizit festzulegen.

Da JS "" und null als boolean false interpretiert, warum sollte der Vergleich! = null benötigt werden?

Fehle ich etwas im Denken, dass die erste Form genauso gut (und ein bisschen kürzer) ist als die zweite?

Ich sehe Vergleiche mit Null ziemlich oft in der JS-Quelle. Warum werden sie benötigt, wenn alle JS-einfachen Objekte bekannte Ergebnisse haben, wenn sie als Booleans umgewandelt werden?

Danke,

Larry

ps. Ich nehme an, wenn 0 (eine ganze Zahl) ein gültiger Fall wäre, dann wenn (0) wäre falsch [ein Problem] und wenn (0! = Null) wäre wahr [erlaubt den 0 Fall]. Irgendein anderer Grund?

pps. Sollte erwähnt haben, dass das tapeDiv ​​neu erstellt wird. Es hat also keinen Sinn, den Stil auf "" zurückzusetzen, da das div brandneu ist.

    
Larry K 02.04.2009, 00:40
quelle

6 Antworten

5

Nein, und deine PS ist korrekt. Null würde zu false ausgewertet, und wenn Null von einer leeren Zeichenfolge oder 0 unterschieden werden soll, dann würden Sie den Null-Check durchführen.

Oder es könnte nur für Klarheit sein. Es ist beschreibender, um anzuzeigen, dass Sie spezifisch nach Null suchen.

    
user37078 02.04.2009, 00:44
quelle
18

Bewerten Sie die Zuweisung mit allen möglichen Falschwerten und Sie erhalten Ihre Antwort:

%Vor%

Die Überprüfung nach " if (color) " lässt keine davon durch.

Der Check für " if (color != null) " lässt 1), 2) und 4) durch. 1) tut nichts, 2) funktioniert nicht wie erwartet in Firefox, und 4) wird immer wie erwartet funktionieren. "Funktioniert" hängt jedoch von Ihrem Kontext ab (den Sie nicht angegeben haben).

Ich hoffe, das hilft.

    
JPot 02.04.2009 02:04
quelle
1

Tut backgroundColor="" irgendwas? Stellt das die Farbe auf die Standardfarbe ein? Wenn das der Fall ist, dann wäre es sinnvoll, die Farbe zurückzusetzen.

if (Farbe) {}

würde fehlschlagen, wenn die Farbe "" ist, aber im zweiten Fall würde sie die backgroundColor zurücksetzen.

    
CookieOfFortune 02.04.2009 00:45
quelle
0

Wenn die Farbe als Ganzzahl eingegeben werden kann, können Sie den Hintergrund nicht auf Schwarz setzen ( #000000 = 0 ).

    
MarkusQ 02.04.2009 00:56
quelle
0
  

Nur eine Zeichenfolge mit mehr als 0 Zeichen sollte verwendet werden, um die Farbe explizit festzulegen.

Warum? Die Zuweisung der leeren Zeichenfolge bedeutet, dass die Farbe zurückgesetzt wird (dh der durch CSS definierte Standardwert wird verwendet), ein vollkommen gültiger Anwendungsfall.

Alles was Sie tun sollten, ist zu überprüfen, ob color definiert ist, dh

%Vor%

oder wenn es eine String-Variable ist

%Vor%

wenn es Werte falschen Typs enthält.

    
Christoph 03.04.2009 10:10
quelle
0

if (typeof color == 'string' & amp; & amp; color.length)

Für typeof genügt es, "==" zu verwenden, und wenn typeof eine Zeichenkette ist, wird nach color.length gesucht. Andernfalls wird es beendet, wenn die zweite Bedingung überprüft wird. Dies ist meiner Meinung nach die vollständigste Lösung.

Wenn Sie aber sicher sind, dass die Farbe eine Zeichenkettenvariable ist und irgendwo vor der Initialisierung definiert ist, können Sie einfach "if (color)" verwenden, aber beachten Sie, dass wenn die Farbe nicht definiert ist Moment der if-Anweisung erhalten Sie einen ReferenceError.

    
Angel 08.06.2012 12:56
quelle

Tags und Links