1
[4] === 4 // is: false
[4] == 4 // is: true

'0' == 0 // is: true
'0' === 0 // is: false

任何人都可以给出确切的原因吗​​?还有什么是严格相等运算符或需要比较?我了解到严格(===)运算符的类型应该相同。这是严格相等运算符检查的内容。如果是,比操作员如何工作?

4

3 回答 3

4
  • ==比较值
  • ===比较值类型

例如

[4] //turns into "4" when comparing
"4" == 4 //They are the same

"4" === 4 //The values are the same, but not the type

参考:http ://es5.github.io/#x11.9.4

http://i.stack.imgur.com/q13LO.png

于 2013-04-13T05:36:36.287 回答
1

===运算符还比较type对象的。

所以,在[4] === 4

[4] 是一个数组,但 4 是一个数字,因此计算结果为 false。

而在'0' === 0

'0' 是一个字符串,但 0 是一个数字,因此计算结果为 false。

于 2013-04-13T05:37:46.300 回答
0

=== 运算符比较类型和值,使其成为更严格的检查。== 运算符执行基于检查的不太严格的值。在某些情况下,它会考虑不同类型的值“相等”,例如 0 vs '' 或 0 vs “0”

== 运算符会将 0 和 '' 视为相等,而 === 运算符不会将它们视为相等,因为它们属于不同的类型。

于 2013-04-13T05:36:26.910 回答