Warum ist es nicht gut, "! = null" zu verwenden, um zu testen, ob das Argument übergeben wurde [duplizieren]

8

Aus dem Buch Wartbare JavaScript erwähnt:

%Vor%

aber ich fühle% != null hier ist ziemlich effektiv, filterte sowohl den Fall des Arguments nicht bestanden noch wird es als null übergeben

Warum sollte der Autor vorschlagen, dass es schlecht ist?

    
caesarwang 16.07.2013, 14:13
quelle

4 Antworten

8

!= null ist falsch für undefined , es bedeutet im Grunde x !== null && x !== undefined . != gibt die Bedingung ein, und einer der Auswirkungen davon ist, dass null und undefined als gleichwertig behandelt werden ( null == undefined ist wahr).

Wenn Sie das nicht möchten, empfehlen einige Leute, != nicht mit null (oder undefined ) zu verwenden.

Und Sie haben recht, dass der Code gegen zwei (und eigentlich drei) Möglichkeiten verteidigt:

  1. Für das Argument wurde überhaupt nichts übergeben.

  2. null wurde übergeben.

  3. undefined wurde übergeben.

Aber der Kommentar sagt, es ist ein schlechter Weg, um zu testen, ob ein Argument übergeben wurde, und es ist: Weil es nicht passierte null oder undefined . (Die Übergabe in null und nicht die Übergabe von irgendetwas sind andere Fälle.) Das bedeutet nicht unbedingt, dass es eine schlechte Möglichkeit ist, das Argument für eine bestimmte Funktion zu überprüfen.

    
T.J. Crowder 16.07.2013 14:17
quelle
0

Sicher. In Javascript können Sie null Werte und undefined Werte haben. Und sie sind nicht gleich. Ein schneller und einfacher Ansatz, um zu überprüfen, ob der Arg gültig ist, wäre wahrscheinlich:

if (arg4)

Und so überprüfen Sie, dass arg4 nicht null, nicht undefiniert und nicht falsch ist. Bitte seien Sie vorsichtig mit dieser letzten Bedingung, Sie können hier bewusst einen falschen Wert angeben: -)

BEARBEITEN: T.J. Crowder ist genau hier. Es ist einfach zu bedienen und wird in den meisten Fällen funktionieren, aber sei vorsichtig.

    
Bartserk 16.07.2013 14:19
quelle
0

Ich würde wärmstens empfehlen Ссылка - ein brillanter Präsentation zu diesem Thema von dem Mann, der es selbst geschaffen hat.

    
Tro 16.07.2013 14:38
quelle
-1

Weil Sie alles an eine Funktion übergeben können, auch null . Wenn Sie Folgendes tun würden:

%Vor%

Sie hätten einen Argument übergeben, aber Ihre Überprüfung würde fehlschlagen, weil die übergebene Referenz null ist. Verwenden Sie immer Folgendes:

%Vor%     
HardcorEViruS 16.07.2013 14:17
quelle

Tags und Links