3 Stimmen

warum ist == in JavaScript IMMER eine schlechte Praxis

Ich weiß, dass es viele Schwierigkeiten mit dem Gleichheitsoperator gibt ( == ). Zum Beispiel sind alle folgenden wahr...

null == undefined
1 == '1'
true == 1
false == ''

In allen oben genannten Fällen ist die Verwendung des Identitätsoperators ( === ) hätte die (absolut) richtige Antwort geliefert.

Aber wenn ich nur einfachere Dinge vergleichen will, die nicht unter Macken leiden, warum sollte ich dann nicht den Gleichheitsoperator verwenden. Zum Beispiel...

typeof x == 'number'
str == 'something'

Meine Frage ist also: Warum hat der Gleichheitsoperator einen so abwertenden Status, wenn er doch in manchen Situationen nützlich ist?

6voto

Oded Punkte 475566

Es wird als schlecht angesehen, weil es etwas namens Typenzwang .

Dies bedeutet, dass "" == false es true in JavaScript, sondern "" === false ist nicht.

Das könnte das sein, was man sich wünscht, aber vielleicht nicht ist.

Dies zu sagen ist IMMER schlechte Praxis ist eine zu pauschale Aussage. Sie ist schlecht wenn Sie nicht wissen, was es bedeutet und bewirkt.

3voto

Tim Down Punkte 304837

Es ist absolut nichts dagegen einzuwenden, die == wenn die Operanden garantiert vom gleichen Typ sind. Wenn die Operanden vom gleichen Typ sind, werden genau die gleichen Schritte ausgeführt wie bei === . Ein gutes Beispiel ist die Verwendung von typeof .

Der Grund für == unter solchen Umständen verpönt ist, ist rein stilistisch. Das Argument ist, dass der Code leichter zu lesen ist, wenn === wird durchgängig verwendet, ohne dass man sich Gedanken über die Auswirkungen einer Verwendung von == . Vieles davon hat seinen Ursprung bei Douglas Crockford und wird von seinem JSLint Werkzeug.

0voto

xdazz Punkte 155864

Nur für eine Ausnahme, wenn der Rückgabetyp festgelegt ist.

Beim Vergleich mit gleichen Typen wird die Typkonvention nicht durch die Verwendung von == erreicht.

Zum Beispiel, typeof gibt immer string zurück,

Sie könnten also verwenden typeof func == 'function' anstelle von typeof func === 'function' ohne Schaden zu nehmen. (Das spart Ihnen ein Byte.)

0voto

Supr Punkte 17992

Wenn Sie beides verwenden, werden Sie früher oder später einen Fehler machen und die == in einem Fall, in dem Sie das nicht hätten tun sollen. Ganz zu schweigen von den zusätzlichen Gehirnwindungen, die nötig sind, um zu entscheiden, ob man === o == in jedem Fall. Festhalten an === und Vergessen == ist weniger fehleranfällig und eine Sache weniger, die man im Auge behalten muss.

0voto

David Hellsing Punkte 101440

Ich sollte auch hinzufügen, dass es Situationen geben kann, in denen doppelte Gleichheitszeichen vorzuziehen sind, wenn man weiß, was sie bewirken. Z.B. wenn Sie Folgendes für ungültig erklären müssen "0" y 0 gleichermaßen:

function validate(input) {
    return input == false;
}

validate(0); // false
validate("0") // false

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