价值观比较

时间:2013-04-13 05:33:15

标签: javascript

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

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

任何人都可以给出确切的原因吗​​?还有什么严格的相等运算符做或需要进行比较?我了解到类型对于严格应该是相同的(===)operator.Is这是严格的相等运算符检查。如果是,那么运算符的运算方式是什么?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

所以,在[4] === 4

[4]是一个数组,但是4是一个数字,所以评估为false。

并在'0' === 0

'0'是一个字符串,但0是一个数字,因此评估为false。

答案 2 :(得分:0)

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

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