535 Stimmen

typeof !== "undefiniert" vs. != null

Ich sehe oft JavaScript-Code, der auf diese Weise auf undefinierte Parameter usw. prüft:

if (typeof input !== "undefined") {
    // do stuff
}

Dies scheint etwas verschwenderisch zu sein, da es sowohl eine Typsuche als auch einen String-Vergleich beinhaltet, ganz zu schweigen von der Ausführlichkeit. Es ist notwendig, weil undefined könnte jedoch umbenannt werden.

Meine Frage ist:
Was ist an diesem Code besser als an diesem Ansatz?

if (null != input) {
    // do stuff
}

Soweit ich weiß, kann man nicht umdefinieren null damit es nicht unerwartet zu einem Bruch kommt. Und wegen des Typ-Zwangs der != Operator, der sowohl auf undefined y null ... was oft genau das ist, was Sie wollen (z.B. für optionale Funktionsparameter).

Dennoch scheint diese Form nicht weit verbreitet zu sein, und sie führt sogar dazu, dass JSLint Sie anschreit, weil Sie das böse != Betreiber.

Warum wird dies als schlechter Stil angesehen?

-7voto

UniquePhoton Punkte 21
if (input == undefined) { ... }

funktioniert einwandfrei. Es ist natürlich keine null Vergleich, aber ich finde normalerweise, dass, wenn ich zwischen undefined y null Ich muss eigentlich eher unterscheiden zwischen undefined und einfach ein beliebiger falscher Wert, also

else if (input) { ... }

tut es.

Wenn ein Programm umdefiniert undefined es ist sowieso ziemlich hirntot.

Der einzige Grund, der mir einfällt, ist die Kompatibilität mit dem IE4, denn er verstand nicht die undefined Schlüsselwort (das leider kein Schlüsselwort ist), aber natürlich können auch Werte sein undefined also mussten Sie das haben:

var undefined;

und der obige Vergleich würde gut funktionieren.

In Ihrem zweiten Beispiel benötigen Sie wahrscheinlich doppelte Klammern, um Lint zufrieden zu stellen?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X