参见这些测试:
答案 0 :(得分:18)
以下是javascript必须为===
执行的操作:
以下是==
必须做的事情:
请注意,如果Type(x)
等于Type(y)
,则运算符执行相同的操作。但是,如果不是,那么==
可能需要进行各种转换,而===
只返回false。
对于您提供的链接,要比较的类型实际上是相同的,因此两个运算符应该大致相同。这里的差异将基于实现细节 - 因为它们做不同的事情,它们可以以不同方式进行优化。从理论上讲,由于===
做得更少,人们会认为它总是更快,但对于某些版本的Firefox来说似乎并非如此,至少如果那些基准是准确的话。
然而,see the difference if the types are different。在执行"hi" === {}
时,您获得约6600万次操作/秒,但对于"hi" == {}
,您只有大约400万次操作/秒。
答案 1 :(得分:5)
JavaScript是一种弱类型语言,因此只要有可能就会应用类型强制。
等于运算符
// 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
上述结果更加清晰,可以尽早破解代码。 这会在一定程度上强化代码,并在操作数不同的情况下提高性能。
所以===比Javascript中的==更快
这是好Reference
答案 2 :(得分:4)
===比较值和类型是否相同 ==比较值是否相同,但它也在比较中进行类型转换。那些类型转换使==慢于===。