[4] === 4 // is: false
[4] == 4 // is: true
'0' == 0 // is: true
'0' === 0 // is: false
任何人都可以给出确切的原因吗?还有什么严格的相等运算符做或需要进行比较?我了解到类型和值对于严格应该是相同的(===)operator.Is这是严格的相等运算符检查。如果是,那么运算符的运算方式是什么?
答案 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
答案 1 :(得分:1)
===
运算符还会比较对象的type
。
所以,在[4] === 4
[4]是一个数组,但是4是一个数字,所以评估为false。
并在'0' === 0
'0'是一个字符串,但0是一个数字,因此评估为false。
答案 2 :(得分:0)
===运算符比较类型和值,使其更加严格。 ==运算符执行基于检查的不太严格的值。在某些情况下,它会考虑不同类型的值“相等”这样的例子是0 vs''或0 vs“0”
==运算符将看到0和''相等,而===运算符不会将它们视为相等,因为它们的类型不同。