Welcher Gleichheitsoperator (== vs. ===) sollte in JavaScript-Vergleichen verwendet werden?
P粉023650014
P粉023650014 2023-08-23 12:29:52
0
2
453
<p>Ich verwende JSLint, um JavaScript zu erkunden, und es gibt viele Vorschläge zurück, um <code>==</code> (zwei Gleichheitszeichen) durch <code>===</code> zu ersetzen Gleichheitszeichen) beim Ausführen von Operationen wie dem Vergleich von <code>idSele_UNVEHtype.value.length == 0</code> innerhalb einer <code>if</code> </p> <p>Gibt es einen Leistungsvorteil, wenn man <code>==</code> durch <code>===</code> ersetzt? </p> <p>Jede Leistungsverbesserung wäre willkommen, da es viele Vergleichsoperatoren gibt. </p> <p>Wird es einen Leistungsgewinn gegenüber <code>==</code> geben? </p>
P粉023650014
P粉023650014

Antworte allen(2)
P粉336536706

使用==运算符(相等

true == 1; //true, because 'true' is converted to 1 and then compared
"2" == 2;  //true, because "2" is converted to 2 and then compared

使用===运算符(Identity

true === 1; //false
"2" === 2;  //false

这是因为相等运算符 == 会进行类型强制转换,这意味着解释器会在比较之前隐式尝试转换值。

另一方面,恒等运算符 === 不会进行类型强制,因此在比较时不会转换值。

P粉178894235

严格相等运算符 (===) 的行为与抽象相等运算符 (==) 相同,只是不进行类型转换,并且类型必须是相同的被认为是平等的。

参考:JavaScript 教程:比较运算符

== 运算符将在进行任何必要的类型转换后比较是否相等。 === 运算符不会进行转换,因此如果两个值不是同一类型,=== 将简单地返回 。两者都同样快。

引用 Douglas Crockford 的精彩JavaScript:好的部分一个>,


更新

@Casebash 在评论和@Phillipe Laybaert 的 关于对象的答案。对于对象,===== 彼此行为一致(特殊情况除外)。

var a = [1,2,3];
var b = [1,2,3];

var c = { x: 1, y: 2 };
var d = { x: 1, y: 2 };

var e = "text";
var f = "te" + "xt";

a == b            // false
a === b           // false

c == d            // false
c === d           // false

e == f            // true
e === f           // true

特殊情况是当您将一个基元与一个计算结果为相同基元的对象进行比较时,由于其 toStringvalueOf 方法。例如,考虑将字符串基元与使用 String 构造函数创建的字符串对象进行比较。

"abc" == new String("abc")    // true
"abc" === new String("abc")   // false

这里 == 运算符检查两个对象的值并返回 true,但是 === 看到它们类型不同并返回 false。哪一个是正确的?这实际上取决于您要比较的内容。我的建议是完全绕过这个问题,只是不要使用 String 构造函数从字符串文字创建字符串对象。

参考
https://262.ecma-international.org/5.1/#sec-11.9 .3

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!