5647 Stimmen

Welcher Gleichheitsoperator (== vs ===) sollte in JavaScript-Vergleichen verwendet werden?

Ich benutze JSLint durch JavaScript zu gehen, und es werden viele Vorschläge zum Ersetzen von == (zwei Gleichheitszeichen) mit === (drei Gleichheitszeichen), wenn Sie z. B. Folgendes vergleichen idSele_UNVEHtype.value.length == 0 innerhalb eines if Erklärung.

Gibt es einen Leistungsvorteil durch den Austausch von == con === ?

Da es viele Vergleichsoperatoren gibt, wäre jede Leistungsverbesserung zu begrüßen.

Wenn keine Typkonvertierung stattfindet, gibt es dann einen Leistungsgewinn gegenüber == ?

89voto

vsync Punkte 101339

=== Kontrollen gleiche Seiten sind gleich in Typ wie auch valeur .


Exemple :

'1' === 1 // will return "false" because `string` is not a `number`

Allgemeines Beispiel:

0 == ''  // will be "true", but it's very common to want this check to be "false"

Ein weiteres gängiges Beispiel:

null == undefined // returns "true", but in most cases a distinction is necessary

Oftmals wird ein untypisiert Prüfung wäre praktisch, weil es Ihnen egal ist, ob der Wert entweder undefined , null , 0 o ""

76voto

Samar Panda Punkte 3856

Javascript-Ausführungsablaufdiagramm für strenge Gleichheit / Vergleich '==='

Javascript strict equality

Javascript-Ausführungsablaufdiagramm für nicht strikte Gleichheit / Vergleich '=='

Javascript non equality

58voto

JavaScript === gegen == .

0==false   // true
0===false  // false, because they are of a different type
1=="1"     // true, auto type coercion
1==="1"    // false, because they are of a different type

56voto

Pop Catalin Punkte 59610

Das bedeutet Gleichheit ohne Typenzwang type coercion bedeutet, dass JavaScript nicht automatisch andere Datentypen in String-Datentypen konvertiert

0==false   // true,although they are different types

0===false  // false,as they are different types

2=='2'    //true,different types,one is string and another is integer but 
            javaScript convert 2 to string by using == operator 

2==='2'  //false because by using === operator ,javaScript do not convert 
           integer to string 

2===2   //true because both have same value and same types

50voto

Constantin Punkte 26508

In einem typischen Skript gibt es keinen Leistungsunterschied. Wichtiger dürfte die Tatsache sein, dass tausend "===" 1 KB schwerer ist als tausend "==" :) JavaScript-Profiler kann Ihnen sagen, ob es in Ihrem Fall einen Leistungsunterschied gibt.

Aber ich persönlich würde tun, was JSLint vorschlägt. Diese Empfehlung ist nicht wegen Leistungsproblemen da, sondern weil Typenzwang bedeutet ('\t\r\n' == 0) wahr ist.

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