请查看以下测试:
===
相关的 JavaScript 内容:
==
相关的 JavaScript 内容:
请注意,如果Type(x)
等于Type(y)
,那么这两个运算符执行的操作是相同的。然而,如果它们不相等,那么==
可能需要进行各种转换,而===
仅返回false。
对于您提供的链接,要比较的类型实际上是相同的,因此这两个运算符应执行相同的操作。差异在于基于实现细节 - 因为它们执行不同的操作,所以它们可以针对不同的优化。理论上,由于===
执行的操作更少,人们会认为它总是更快,但至少在某些Firefox版本的基准测试中似乎并非如此。
然而,如果类型不同,情况就不同了。执行"hi" === {}
时,您将获得大约6600万次操作/秒,但对于"hi" == {}
,您仅有约400万次操作/秒。
==
和 ===
,如果类型不同,则需要许多额外的步骤。”并非一定如此。 - user2736012==
为什么比===
更慢。 - plalxJavaScript是一种弱类型语言,因此会在可能的情况下应用类型转换。
等于运算符
// These are true
new Number(10) == 10; // Number.toString() is converted
// back to a number
10 == '10'; // Strings gets converted to Number
10 == '+10 '; // More string madness
10 == '010'; // And more
isNaN(null) == false; // null converts to 0
// which of course is not NaN
严格相等运算符
它的工作方式类似于普通相等运算符,但是严格相等运算符不会对其操作数进行类型转换。
"" === "0" // false
0 === "" // false
0 === "0" // false
false === "false" // false
false === "0" // false
false === undefined // false
false === null // false
null === undefined // false
" \t\r\n" === 0 // false
===用于比较值和类型是否相同。
==用于比较值是否相同,但它在比较过程中也会进行类型转换。这些类型转换使得==比===慢。
==
和===
。 - elclanrs