[4] === 4 // is: false
[4] == 4 // is: true
'0' == 0 // is: true
'0' === 0 // is: false
任何人都可以给出确切的原因吗?还有什么是严格相等运算符或需要比较?我了解到严格(===)运算符的类型和值应该相同。这是严格相等运算符检查的内容。如果是,比操作员如何工作?
[4] === 4 // is: false
[4] == 4 // is: true
'0' == 0 // is: true
'0' === 0 // is: false
任何人都可以给出确切的原因吗?还有什么是严格相等运算符或需要比较?我了解到严格(===)运算符的类型和值应该相同。这是严格相等运算符检查的内容。如果是,比操作员如何工作?
==
比较值===
比较值和类型[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
===
运算符还比较type
对象的。
所以,在[4] === 4
[4] 是一个数组,但 4 是一个数字,因此计算结果为 false。
而在'0' === 0
'0' 是一个字符串,但 0 是一个数字,因此计算结果为 false。
=== 运算符比较类型和值,使其成为更严格的检查。== 运算符执行基于检查的不太严格的值。在某些情况下,它会考虑不同类型的值“相等”,例如 0 vs '' 或 0 vs “0”
== 运算符会将 0 和 '' 视为相等,而 === 运算符不会将它们视为相等,因为它们属于不同的类型。